抽象类 关键字 abstract
1、抽象类继承子类里面会有明确的方法重写要求,而普通类没有。
2、抽象类之比普通类多了一些抽象方法的定义,其他组成部分与普通类完全一样。
3、普通类对象可以直接实例化,但是抽象类的对象必须向上转型之后才可以实例化(运用到多态性)。
abstract class A { // 定义一个抽象类,使用abstract声明 public void fun() { // 普通方法 System.out.println("存在有方法体的方法!"); } // 此方法并没有方法体的声明,并且存在abstract关键字,表示抽象方法 public abstract void print(); } class B extends A{ public void print(){ //必须在子类中重写抽象父类中的抽象方法 }; }
this关键字
this.属性表示的是本类属性,这样即使与方法中的参数重名也可以明确定位
class Book { private String title; private double price; public Book(String title, double price) { this.title = title; // this.属性表示的是本类属性,这样即使与方法中的参数重名也可以明确定位 this.price = price; // this.属性表示的是本类属性,这样即使与方法中的参数重名也可以明确定位 } // setter、getter略 public String getInfo() { return "书名:" + title + ",价格:" + price; } } public class TestDemo { public static void main(String args[]) { Book book = new Book("一千零一夜", 99.9); System.out.println(book.getInfo()); } }
直接输出对象
class Book { public void print() { // 调用print()方法的对象就是当前对象,this就自动与此对象指向同一块内存地址 System.out.println("this = " + this); // this就是当前调用方法的对象 } } public class TestDemo { public static void main(String args[]) { Book booka = new Book(); // 实例化新的Book类对象 System.out.println("booka = " + booka); // 主方法中输出Book类对象 booka.print(); // 调用Book类的print()方法输出,此时booka为当前对象 System.out.println("---------------------------"); Book bookb = new Book(); // 实例化新的Book类对象 System.out.println("bookb = " + bookb); // 主方法中输出Book类对象 bookb.print(); // 调用Book类的print()方法输出,此时bookb为当前对象 } }