java 从零开始,学习笔记之基础入门<重载_覆盖_继承>(十)(二)

2014-11-24 08:34:27 · 作者: · 浏览: 1
ct01(String name){
this.name=name;
}
//2
public NewManyObject01(String name,String pass){
// this.name=name;
//在这个构造器中调用1号
this(name);//表示调用传递一个参数的构造器
this.pass=pass;
}
//3
public NewManyObject01(String name,Stringpass,String age){
this(name,pass);//表示调用2号构造器
this.age=age;
}
}
Super和this关键字
Super关键字
子类继承父类的时候:
在子类中中通过super关键字打点调用父类里面的属性和方法
Super关键字还可以调父类的构造器
子类:
package com.ibm.supers;
publicclass SonSuper extends FatherSuper{
publicvoid show(){
//通过super关键字可以访问到父类中的属性
//但是如果父类中的属性用private修饰,则super访问不到
super.f = 12.5f;
super.name = "admin";
//一个类继承了一个父类可以直接访问父类中的方法
super.find();
super.select();
}
//如果父类中有和子类相同名的方法,那么我想访问父类中的方法
publicvoid find(){
System.out.println("我是子类的方法");
}
public SonSuper(){
//在子类的构造器中访问父类的构造器
//子类中只能调到父类的构造器,不能调到父类的父类的构造器,但是可以调到父类的父类的属性
super("cw");
}
publicstaticvoid main(String[] args) {
new SonSuper().show();
}
}
父类:
package com.ibm.supers;
publicclass FatherSuper extends GrandFatherSuper{
privateintid;
public String name;
protectedfloatf;
publicvoid find(){
System.out.println(name);
}
public String fingName(){
returnname;
}
public FatherSuper(){
}
public FatherSuper(String _name){
System.out.println("父类构造的值:"+_name);
}
}
输出结果:
父类构造的值:cw
admin
将当前对象作为参数传递给其它方法或构造器
package com.ibm.thises;
publicclass Teacher {
publicvoid show(Teacher t){
System.out.println(t);
}
publicvoid show1(){
show(this);//This是一个当前类的对象,已经调用默认的无参构造器创建好的
Student st = new Student(this);//将当前类的对象作为参数传递到构造器中
}
publicstaticvoid main(String[] args) {
new Teacher().show1();
// System.out.println(new Teacher());
}
}
package com.ibm.thises;
publicclass Student {
private Teacher t;
public Student(Teacher t){
this.t = t;
}
}
自由块:也称游离块
* 不管使用哪个构造器创建对象,游离块首先被执行,然后在调构造器实例化对象
package com.ibm.news;
publicclass Test {
privateintid;
public Test(int id) {
System.out.println("------我是构造器----");
this.id = id;
}
{
System.out.println("-------我是一个非静态的初始化块------");
this.id = 15;
//调方法
show();
}
publicvoid show(){
System.out.println(this.id);
}
publicstaticvoid main(String[] args) {
Test tt = new Test(20);
System.out.println(tt.id);
}
}
输出结果:
-------我是一个非静态的初始化块------
15
------我是构造器----
20
= = 和equals
= =是判断判断二个引用对象 或者简单数据类型所指向的值是否相等
Equals则判断的是二个对象里面的内容是否相等