封装:(用private实现)
继承:(extends)
Person:父类,基类,超类
Student:派生类,子类
派生类继承了基类除过构造函数的其他东西
派生类需要帮助基类构造
/**
* Created with IntelliJ IDEA.
* Description:
* User:
* Date: 2019-04-09
* Time: 15:01
*/
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void getPersonInfo(){
System.out.println("姓名:"+name+"年龄: "+age);
}
}
class Student extends Person {
private String school;//扩充新的属性
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Student(String name, int age) {
super(name, age);
}
}
public class TexttDemo1 {
public static void main(String[] args) {
Person person = new Person("张三",18);
person.getPersonInfo();
Student student = new Student("李四",19);
student.setSchool("第一中学");
student.getSchool();
student.getPersonInfo();
System.out.println("姓名:"+student.name+"年龄: "+student.age+"学校: "+student.getSchool());
}
}
多态:基类引用派生类对象(并且基类和派生类有同名的覆盖(重写)方法)(向上转型)
内部类:
1.实例内部类(成员内部类)
拿到实例内部类对象:通过外部类的对象
OuterClass.InnerClass innerClass =outerClass.newInnerClass();
/**
* Created with IntelliJ IDEA.
* Description:
* User:
* Date: 2019-04-09
* Time: 15:44
*/
class OuterClass {
public int data1 = 77;
private int data2 = 20;
int data3 = 30;
public static int data4 = 40;
public OuterClass() {
System.out.println("OuterClass.inti()");//构造函数
}
public void function() {
data4 = 100;
System.out.println("OuterClass.function()");
}
class InnerClass {
public int data1 = 10;
public InnerClass() {
System.out.println("InnerClass.init()");//构造函数
}
public void fun1() {
System.out.println(this.data1);
System.out.println(OuterClass.this.data1);
System.out.println(data2);
System.out.println(data3);
System.out.println(data4);
System.out.println("InnerClass.fun1()");
}
}
}
public class TextDemo2 {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
//OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
innerClass.fun1();
}
}
2.静态内部类(内部类+static)
3.本地内部类(方法内部类)
4.匿名内部类
this关键字:
1.this调用本类属性
2.this调用本类方法
3.this表示当前对象的引用
super关键字:
1.调用基类的构造函数
2.访问基类的属性
3.调用基类的成员方法
overload:重载:函数名相同,参数列表不同,返回值不要求
override:重写: 函数名相同,参数列表相同,返回值相同