继承、封装、多态(Java)
1.继承
/**
* @author 张辉
* 继承(extends):继承就是在一个类中继承另外一个类(先当于继承遗产的问题。)
*/
public class ext {
public static void main(String[] args) {
Student student = new Student("小六", 18, 05, "computer");
student.talking();
student.study();
}
}
class Human {
String name;
int age;
int id;
public void wolk() {
System.out.println("Human can run!");
}
public void talking() {
System.out.println("Huamn can speak Chinese");
}
}
class Student extends Human { //继承
String major;
public void study() {
System.out.println(this.id + "正在学习!");
}
public void talking() { // 重载human中的talking方法
System.out.println("Student can speak Chinese and English!");
}
public Student(String name,int age,int id,String major) {
this.name = name;
this.age = age;
this.id = id;
this.major = major;
}
}
2.封装
/*
* @张辉
* 封装:封装就是为了将内部细节封装起来,方便维护,简化外部调用;比如一台电视机(老式),
* 你不必为了调台,而去电视机主板上更改,而是直接通过外部按钮直接解决,我们所提供的按钮就是封装的体现。
*
**访问权限
* public:可以访问该项目包中所有的类。(权限最大)
* private:访问权限在同一个类中(权限最小),他的权限就只能让本身类使用。
* protected:访问权限同一个包中的类以及其他包中的子类(继承)。
*/
public class TestFengZhuan {
Student s = new Student();
}
/*
* private修饰的就只能在自己的类中使用,不能被其他外部使用。
*/
class Human {
private String name;
private int age;
private int id;
protected void wolk() { //这儿可以使用name变量。但是name变量在外边就不可以使用了(此类之外),这儿的wolk()方法就只有同类或者子类(继承了Human的子类)才可以使用。
System.out.println(this.name + " can run!");
}
private void talking() { //只有这儿可以调用talking()方法。
System.out.println("Huamn can speak Chinese");
}
}
3.多态
/*
* @张辉
* 多态:多态是方法的多态,不是属性的多态(多态与属性无关)
* 多态三个必要条件:继承,方法重写,父类引用指向子类的对象。
* 父类的引用指向子类对象后,用该父类调用子类重写的方法,此时这就是多态。
* 最主要的还是父类指向子类(继承)的对象,不仅如此还必须是同一个方法(也就是方法的重写),
*/
package cn.zhang;
public class duotai {
public static void main(String[] args) {
Animal a1 = new Cat();//自上而下的自动转型。
animal(a1);
Animal a2 = new Dog();//自上而下的自动转型。
animal(a2);
}
static void animal(Animal a) { //这儿就是多态。
a.shut();
}
}
class Animal {
public void shut() {
System.out.println("叫了一声!");
}
}
class Dog extends Animal {
public void shut() {
System.out.println("汪汪汪!");
}
}
class Cat extends Animal {
public void shut() {
System.out.println("喵喵喵!");
}
}
多态还是相当难理解的,至少我现在还不是太理解。(可以说不会用!)