构造器重载
·构造器一般用来创建对象的同时初始化对象。如
class Person{
String name;
int age;
public Person(String n,int a) { name=n; age=a; }
}
·构造器重载使得对象的创建更加灵活,方便创建各种不同的对象。
构造器重载举例:
public class Person{
public Person(String name,int age,Date d) { this(name,age);... }
public Person(String name,int age) { ... }
public Person(String name,Date d) { ... }
public Person() { ... }
}
·构造器重载,参数列表必须不同
3.9 关键字——this
·在Java中,this关键字比较难理解,它的作用和其词义很接近。
>它在方法内部使用,及这个方法所属对象的引用;
>它在构造器内部使用,表示该构造器正在初始化的对象。
·this表示当前对象,可以调用类的属性、方法和构造器
·当在方法内需要用到调用该方法的对象时,就用this。
使用this调用属性、方法
class Person{ //定义Person类
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void getInfo(){
System.out.println("姓名:"+name);
this.speak();
}
public void speak(){
System.out.println("年龄:"+this.age);
}
}
1、当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
2、在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性
·使用this调用本类的构造器
public class Person { //定义Person类
private String name;
private int age;
public Person() { //无参构造
System.out.println("新对象实例化");
}
public Person(String name) {
this(); //调用本类中的无参构造方法
this.name=name;
}
public Person(String name,int age) {
this(name);//调用有一个参数的构造方法
this.age=age;
}
public String getInfo() {
return "姓名:"+name+"年龄:"+age;
}
}
3、this可以作为一个类中,构造器相互调用的特殊格式
注意:
1、使用this()必须放在构造器的首行!
2、使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。
JavaBean
·JavaBean是一种Java语言写成的可重用组件。
·所谓javaBean,是指符合如下标准的Java类
>类是公共的
>有一个无参的公共的构造器
>有属性,且有对应的get、set方法
·用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴功能,而不用关心任何改变。
自动生成 ↑
4.1 面向对象特征之二:继承
·为描述和处理个人信息,定义类Person:
Person |
+name : String +age : int |
+getInfo : String |
public class Person{
public String name;
public int age;
public String getInfo()
{ ... }
}
继承(1)
为描述和处理学生信息,定义类Student:
Student |
+name : String +age : int +school : String |
+getInfo() :String |
public class Student{
public String name;
public int age;
public String school;
public String getInfo()
{ ... }
}
继承(2)
·通过继承,简化Student类的定义:
public class Person{
public Stringname;
public int age;
public String getInfo() { ... }
}
public class Student extends Person{
public String school;
}
//Student类继承了父类Person的所有属性和方法,并增加了一个属性school。Person中的属性和方法,Student类都可以利用。
继承(3)
·为什么要有继承?
>多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需再定义这些属性和行为,只要继承那 个类即可。
·在此处多个类称为子类,单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”
·类继承语法规则:
class Subcless extends Superclass{ }
继承(4)
类的继承(5)
·子类继承了父类,就继承了父类的属性和方法。
·在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。
·在Java中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。
关于继承的规则:
>子类不能直接访问父类中私有的(private)的成员变量和方法。
类的继承(6)
·Java只支持单继承,不允许多重继承
>一个子类只能有一个父类
>一个父类可以派生出多个子类
单继承举例