您的位置:首页 > 编程语言 > Java开发

Java面向对象之抽象类,接口

2017-07-23 09:59 435 查看
抽象类:

含有抽象方法的类被声明为抽象类
抽象方法由子类去实现

含有抽象方法的类必须被声明为抽象类

抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法

抽象方法:

声明而未被实现的方法

抽象类不能被实例化
子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法
抽象方法的权限修饰符必须为public

abstract

//人类
public class Person {
private String name;
//自定义属性  引用类型 宠物
private Pet pet;

public Person() {

}

public Person(String name, Pet pet) {
this.name = name;
this.pet = pet;
}

public void petHappy() {
pet.scream();
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Pet getPet() {
return pet;
}

public void setPet(Pet pet) {
this.pet = pet;
}
}


// 父类宠物类 抽象类
public abstract class Pet {
private String pname;
//抽象类可以有构造方法
public Pet() {
}

public Pet(String pname) {
this.pname = pname;
}
//抽象类 的抽象方法   不能有方法体
public abstract void scream();

public String getPname() {
return pname;
}

public void setPname(String pname) {
this.pname = pname;
}
}


//子类 老虎类
public class Tiger extends Pet {
public String fur; // 毛的颜色

public Tiger(String name, String fur) {
super(name);
this.fur = fur;
}

public Tiger() {
super();
}

@Override
public void scream() {
System.out.println("这是一只老虎的声音 !");
}

public String getFur() {
return fur;
}

public void setFur(String fur) {
this.fur = fur;
}
}


//子类 兔子类
public class Rabbit extends Pet {

public String fur; // 毛的颜色

public Rabbit(String name, String fur) {
super(name);
this.fur = fur;
}

public Rabbit() {
super();
}

@Override
public void scream() {
System.out.println("兔子会卖萌 !");
}

public String getFur() {
return fur;
}

public void setFur(String fur) {
this.fur = fur;
}
}


//主方法
public class Main {
public static void main(String[] args) {
Pet t1 = new Tiger("qqqq","www");
Pet r1 = new Rabbit();

Person p1 = new Person("小明", t1);
Person p2 = new Person("小红", r1);

p1.petHappy();
p2.petHappy();
}
}




接口:

一种特殊的抽象类,里面全部是由全局常量和公共的抽象方法所组成

类与类之间的实现关系

接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的

一个类可以同时继承和实现接口

一个借口不能集成一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承

public interface InterFaceTest1 {
public static final String name = "hanqi";
String pname = "tianqi";
//接口定义的属性默认public static final
public void testMethod();
}


一个类去实现一个接口必须实现其中的方法

继承:Java中不支持多继承,一个类只能继承一个

接口:接口可以实现多个

//接口1
public interface Inter {
int AGE=22;//接口中的常量都是全局常量,也就是默认 public全局公共的,static静态,final不可改变的
public abstract void tell();
}


//接口2
public interface Inter2 {
public abstract void say();
}


//接口3
public interface Inter3 extends Inter,Inter2{
//接口继承接口
//一个接口不能继承一个抽象类,但可以继承多个接口,实现接口的多继承
}


//抽象类
public abstract class Chouxc {
public abstract void write();
}


//子类
public  class Shixian extends Chouxc implements Inter,Inter2{
public void tell(){
System.out.println("这是类实现的接口 Inter 的抽象方法");
}
public void say(){
System.out.println("这是类实现的接口 Inter2 中的抽象方法");
}
public void write(){
System.err.println("这是类继承的抽象类中的抽象方法");
}
}


//主方法
public class InterTest1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Shixian s=new Shixian();
s.tell();
s.say();
System.out.println(Inter.AGE);
System.out.println(s.AGE);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: