1.this
1)表示当前对象:
public class Person {
private String name;
public void setName(String name) {
//表示当前对象
this.name = name;
}
}
2)表示当前类的构造方法(默认的无参的构造方法,带参数的构造方法) this()
public class Person {
private String name;
private String id;
public Person(String name) {
this.name = name;
}
public Person(String name, String id) {
//这里表示当前类的构造方法this()
this(name);
this.id = id;
}
}
2.static----静态的 静态的方法 静态的成员变量
1)可以修饰属性和方法;
2)被static修饰的属性被所有的对象共享;
例子:
import java.sql.Date;
//某中国公司填写身份信息,所有人都是中国人
public class Person {
private String id;
private String name;
private Date date;
//所有国籍 都相同 ,所以static
static String nation;
}
3)被static修饰的成员优先于对象存在,随着类的加载而存在,和该类的对象是否创建没有任何关系;
4)如何访问被static修饰的成员
|----对象.成员;
|----类.成员;
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
System.out.println(Person.nation);
System.out.println(p1.nation);
System.out.println(p2.nation);
}
5)static修饰的属性和方法属于类,不属于对象,static修饰的变量被改,那么所有的对象都能观察到这种修改。
public static void main(String[] args) {
//某中国公司填写身份信息,所有人都是中国人,国籍为中国
Person.nation = "中国";
Person p1 = new Person();
Person p2 = new Person();
System.out.println(Person.nation);
System.out.println(p1.nation);
System.out.println(p2.nation);
System.out.println("------------------");
//身份信息国籍要求填写国家全称——中华人民共和国
p1.nation = "中华人民共和国";
System.out.println(Person.nation);
System.out.println(p1.nation);
System.out.println(p2.nation);
System.out.println("------------------");
}
运行结果:
3.继承----extends-----扩展----父类不能满足要求,对其进行增强----子类
1)子类继承了父类,就继承了父类的方法和属性;
//父类----基类
public class Person {
private String name;
private String gender;
private int age;
private String addr;
//工作
public void work() {
System.out.println("工作......");
}
//吃饭
public void eat() {
System.out.println("吃饭......");
}
}
//子类---派生类
public class Teacher extends Person{
//新建子类后,子类拥有父类的所有属性和方法,但是只能直接调用父类中protected和public的属性和方法
}
2)子类除了具有父类的属性和方法,还拥有自己的属性和方法;
//子类---派生类
public class Teacher extends Person{
public void job() {
System.out.println("上课.....");
}
}
3)super----父类
|----表示父类对象
|----表示父类的构造方法(默认的无参的构造方法,带参数的构造方法) super()
//父类----基类
public class Person {
private String name;
private String gender;
private int age;
protected String addr;//为了方便子类调用,addr修改为protected类型
//有参数的构造方法 三个参数:name,gender,age
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
}
//子类---派生类
public class Teacher extends Person{
public Teacher(String name, String gender, int age, String addr) {
super(name,addr,age);
this.addr = addr;
}
}
4)Java中只支持单继承,一个类只能有一个直接父类, 可以有多个间接父类;
5)写继承不只是为了复用性。而是要有关系才去做继承。
4.重写----方法之间的关系
1)发生在父类和子类当中;
2)返回值类型、方法名、参数列表相同。
//子类---派生类
public class Teacher extends Person{
public void work() {
System.out.println("上课.....");
}
}
5.final----关键字----最终的
1)修饰类,被修饰的类无法被继承
2)修饰方法,被修饰的方法不能被重写
3)修饰变量,被修饰的变量不能被修改----常量
6.多态----事物的多种状态
1)重载和重写
2)子类对象的多态性---->子类对象赋值给父类引用---->父类引用指向子类对象----->向上转型
Sutdent s = new Student()
Person p = new Student();
3)向下转型
instanceof
7.抽象类----抽象方法 抽象----不具体
1)需要有这个方法,但是不知道这个方法如何去具体实现,那么这样的方法就可以设置成为抽象方法;
2)抽象方法使用abstract进行修饰,没有方法体,以";"结尾;
3)如果一个类中有抽象方法,那么这个类一定是抽象类; 加abstract;
4)抽象类只能被继承(extends),不能通过抽象类创建对象;
5)如果一个类继承了抽象类,那么这个类要实现抽象类中所有的抽象方法;
6)如果子类没有实现抽象类中所有的抽象方法,那么子类也要被定义成抽象方法。
8.接口----USB接口----规范
1)如果一个抽象类中所有的方法都是抽象方法,那么这个类就可以被定义成接口;
2)接口---interface;
3)接口中所有的抽象方法默认使用public abstract修饰,但是public abstract可以不写;
4)接口只能被类实现(implements);
5)一个类可以实现多个接口。引用多个接口时用","分隔。
9.包-----文件夹
1)对代码分类;
2)声明包----package;
3)使用包----import;
4)常用包
java.lang
java.awt---java.swing
java.util---工具 集合 日期 时间
java.io
java.net---网络 C/S OSI TCP/IP 四层/五层
java.sql---数据库 JDBC