java中的继承、重载、重写、构造、多态、抽象类、接口、封装、访问控制
一、继承
继承使得可以定义一个通用的类(即父类),之后扩充该类成为一个更加特定的类(子类)。当子类继承父类时使用关键字extends。
现在创建一个名为test的java项目,并创建一个名为test的包,在test包中创建三个类,分别为:SUPER.java,SUPERA.java,Test.java。
Test.java中的内容如下:
package test;
public class Test {
public static void main(String[] args) {
System.out.println("hi");
SUPERA ABA=new SUPERA();
ABA.cba();
}
}
SUPER.java中的内容如下
package test;
public class SUPER {
int age=18;
String name="James";
void abc(int age,String name) {
System.out.println(name+age);
}
void cba() {
System.out.println("这是父类无参");
}
}
SUPERA.java中的内容如下:
package test;
public class SUPERA extends SUPER {
void nnn() {
cba();
}
}
从上面三个java文件中可以看出,SUPER.java是父类,SUPERA.java是子类,当子类继承父类时使用了extends关键字。父类SUPER中定了了两个方法,一个是有参的abc()和一个无参的cba()。子类SUPERA中定义了一个nnn()方法,该方法中使用super关键字调用了父类中的cba()无参方法。因此在主类TEST.java中实例化后,调用了父类的cba()方法。
二、重载
重载又称方法的重载,即在同一个类中有多个方法,这些方法有相同的方法名,但是参数列表不相同。
例如:在项目test下面创建一个名为OVERLOAD的包,在此包中创建两个java文件,分别为overloadDemo.java和OVERLOAD.java。其中:
overloaddemo.java中的内容为:
package OVERLOAD;
public class overloadDemo {
public static void main(String[] args) {
OVERLOAD NEW = new OVERLOAD();
NEW.sayHello();
NEW.sayHello(6);
NEW.sayHello("james");
}
}
OVERLOAD.java中的内容为:
package OVERLOAD;
public class OVERLOAD {
void sayHello() {
System.out.println("hello");
}
void sayHello(String name) {
System.out.println(name);
}
void sayHello(int num) {
System.out.println(num);
}
}
三、重写
方法的继承是指子类可以重写(覆盖)继承自父类的方法,即子类的方法名和参数与父类相同,但方法的实现不同。当子类的方法被调用时,运行的是子类重写后的版本。重写方法时:
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。
3、重写方法不能使用比被重写的方法更严格的访问权限。
a.java:
public class a {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
b.java
package hhhh;
public class b extends a{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getInfo() {
return "my name is"+getName()+",i am "+getAge()+"years old"+",my school is"+getSchool();
}
}
c.java
package hhhh;
public class c {
public static void main(String[] args) {
b bb = new b();
bb.setName("aa");
bb.setAge(18);
bb.setSchool("school");
System.out.println(bb.getInfo());
}
}
四、访问控制
访问控制分为类的访问控制和变量的访问控制。
1、类的访问控制:public+默认
1) 类的修饰可以使用public和默认两种;
2) protected和private可以修饰内部类;
3) public修饰的类可以被任何一个访问;
4) privated修饰的类只可以被同一个包中的类使用。
2、类成员的访问控制(变量+方法):public+protected+默认+proviate
修饰类
本类
同意个包中的类
子类
其他类
public
能
能
能
能
protected
能
能
能
不能
默认
能
能
不能
不能
private
能
不能
不能
不能
五、访问控制
六、多态