package ClassN1;
public abstract class Abstracted {
//抽象类、绝对不能实例化、可以不包括抽象方法,可以有实例方法
//经过子类继承之后,覆盖了抽象的方法,就可以创建子类的实例
//含有抽象方法的类一定是抽象类
private String account;
private String name;
public Abstracted() {
super();
}
public Abstracted(String account, String name) {
super();
this.setAccount(account);
this.name = name;
}
public String getName() {
return name;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public abstract double getMoney();//抽象方法,只有函数声明,没有函数体
}
package ClassN1;
public abstract class Abstracted1 extends Abstracted {//子类继承父类,将继承所有的属性和方法,无论修饰符如何,只是private继承过来没办法使用罢了
private String date;
public Abstracted1(String date) {
super("2301","李明");
this.date = date;
}
public String getName() {//重写/覆盖,发生在子类继承父类时
return "BOBO"; //子类的:函数名,返回值,参数列表与父类完全相同,父类改方法被覆盖
//若这种情况下想使用父类的方法,可以借助super关键字
}
public String getName(String name) {//重载:发生于函数的命名
return "重载"; //要求函数名相同,参数列表必须不同,要么参数类型不同,要么个数不同
}
public abstract String getAddress();抽象方法,只有函数声明,没有函数体
}
package ClassN1;
public final class Abstracted2 extends Abstracted1{//只能单继承
private String sex;
public Abstracted2(String sex) {
super("2018_04_03");
this.sex=sex;
}
public static void main(String[] args) {
Abstracted2 a=new Abstracted2("男");
System.out.println(a.getAddress());
System.out.println(a.getMoney());
System.out.println(a.getName());
}
@Override
public String getAddress() {
return "地址:玄武区孝陵卫200号";
}
@Override
public double getMoney() {
System.out.println("李明输入账户:"+getAccount()+"密码:"+this.getName());
return 3000;
}
}
2、接口
package ClassN1;
public interface Interface1 {//访问修饰符只能是public 或package,其他修饰符可以有final static
public static final String name1="Interface1" ;//接口中只有常量,没有变量,且类型必须是public static final
public abstract String getName();//接口中的方法只能是public abstract,不能是其他类型
//接口不能有构造器
//接口的使用完美的解决类单继承问题
}
package ClassN1;
public interface Interface2 {
public static final String name="Interface2";
public abstract String address();
}
package ClassN1;
public interface Interface3 extends Interface1,Interface2{//接口可以多继承
public static final String sex="男";
public abstract String getAccount();
}