一,继承
public class A extends B
1.其中extends表示A中的方法全部继承与B,即A为B的子类,或B为A的父类
2.一个子类只能对应一个父类,但一个父类可以拥有多个子类
代码示例:
package com.itjava.demo1;
public class Application {
public static void main(String[] args) {
Student student=new Student();
System.out.println(student.money);
student.say();
}
}
package com.itjava.demo1;
public class Student extends Person {
}
Student类中本身没有方法,但通过extends继承了Person中的方法
package com.itjava.demo1;
public class Person {
public int money=1000000000;
public void say(){
System.out.println("hello");
}
}
二,封装
private get set
代码示例:
package com.itjava.demo1;
public class Application {
public static void main(String[] args) {
Student student1=new Student();
student1.setName("sam");
System.out.println(student1.getName());
}
}
package com.itjava.demo1;
public class Student {
private String name;
private int age;
private char sex;
/私有属性不能直接被外部调用
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
/定义公共方法以供调用
}
三,this与super
图片来源:西部开源-秦疆
代码示例:
package com.java;
public class test {
public static void main(String[] args) {
Student student=new Student();
student.test("jerry");
student.test1();
}
}
package com.java;
public class Person {
public String name="tom";
public void print(){
System.out.println("2");
}
}
package com.java;
public class Student extends Person{
private String name="sam";
public void test(String name){
System.out.println(name);//jerry
System.out.println(this.name);//sam
System.out.println(super.name);//tom
}
public void print(){
System.out.println("1");
}
public void test1(){
print();//1
this.print();//1
super.print();//2
}
}
四,方法重写
@Override
代码示例:
package com.java;
public class test1 {
public static void main(String[] args) {
A a=new A();
a.test();/A
/父类的引用指向子类
B b=new A();/子类重写了父类的方法
b.test();/A
}
}
package com.java;
public class A extends B{
@Override
public void test() {
System.out.println("A=>test()");
}
}
package com.java;
public class B {
public void test(){
System.out.println("B=>test()");
}
}
若要在子类中引用父类被覆盖的方法:
package com.java;
public class test1 {
public static void main(String[] args) {
A a=new A();
a.test();
}
}
public class A extends B{
@Override
public void test() {
super.test(); /调用被覆盖的方法
System.out.println("A=>test()");
}
}
public class B {
public void test(){
System.out.println("B=>test()");
}
}
注:
1.方法重写只能是非静态公开方法
2.子类与父类方法必须相同,方法体不同