Java基础复习-05
面向对象特征-2
1.抽象类
抽象类其实就是一个包含了抽象方法的类,跟普通类没有本质的区别。
对于抽象类,不能直接实例化;如果想使用抽象类, 必须使用子类。 子类继承抽象类,必须实现抽象类中的全部抽象方法。
abstract和final二者只能出现一个。以为前者必须被继承,后者不能被继承。
抽象类中可以有构造方法,但是该构造方法是不能直接调用的,交给子类去调用。
包含抽象方法的类是抽象类,但是反过来,抽象类可以没有抽象方法,即便抽象类将所有的方法都实现了,没有抽象方法,它也不能直接实例化。
abstract class A{public A(){// 构造方法System.out.println("*************************") ;}public abstract void fun() ;};class B extends A{// 继承抽象类public B(){super() ;System.out.println("=========================") ;}public void fun(){// 覆写方法时需要注意访问控制权限System.out.println("Hello World!!!") ;}};public class AbstractDemo04{public static void main(String args[]){B b = new B() ;}}; *************************=========================
interface A{// public static final String INFO = "CHINA" ;String INFO = "CHINA" ;// 全局常量// public abstract void print() ;void print() ;// 抽象方法public void fun() ;// 抽象方法} 
class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){// 覆写了toString()方法 return "姓名:" + this.name + ",年龄:" + this.age ;}};public class StrTest{public static void main(String arg[]){System.out.println(new Person("张三",30)) ;}};class Person{private String name ;private int age ;public boolean equals(Object obj){// 是完成对象的比较操作if(this==obj){// 两个地址相等return true ;}if(!(obj instanceof Person)){// 不是同一个类型return false ;}Person per = (Person)obj ;if(this.name.equals(per.name)&&this.age==per.age){return true ;}else{return false ;}}public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){// 覆写了toString()方法 return "姓名:" + this.name + ",年龄:" + this.age ;}};public class EquTest{public static void main(String arg[]){System.out.println(new Person("张三",30).equals("hello")) ;}};