java基础06 多态与集成+几个关键字(this,static,final,abstract,extend)

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值