欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面向对象(二)学习笔记

程序员文章站 2024-03-12 22:55:20
...

前言:
 

封装、继承、多态之后抽象以及接口的学习需要特别重视!!!

补:

String 方法是在堆之中

 

面向对象思想:

抽象类,没有业务意义,比如宠物吃东西, 我们借用abstract 设计抽象类,此时编译器会进行提示

Note

构造函数不能抽象,抽象类中可以有抽象方法供子类调用

接口:

JAVA借用接口实现多继承,这一点与C++非常不一样。侧重点在行为

学习样例:

开发打印机---面向接口编程

需求:
墨盒;彩色,黑白

纸张:A4,B5

黑盒和纸张都不是打印机厂商提供的,打印机厂商要兼容市场上的墨盒、纸张

墨盒接口:得到颜色,  

实现接口:1.彩色  2.黑白

纸张接口 :得到纸张

纸张类型:1.A4  2.B5

行为是打印:
输出:使用黑白墨盒在A4纸张上打印。

部分代码如下

接口

package com.ydl.ch04;

public interface Paper {
	
	public String getSize() ;
}

 实现接口

package com.ydl.ch04;

public class A4Paper implements Paper {
	String paper="A4纸张";
	@Override
	public String getSize() {
		this.paper="A4纸张";
		//System.out.println("使用"+paper);
		return paper;
	}

}

打印机类 

package com.ydl.ch04;

public class NewPrinter {
	public Paper paper;
	public Printer pri;
	public Paper getPaper() {
		return paper;
	}
	public void setPaper(Paper paper) {
		this.paper = paper;
	}
	public Printer getPri() {
		return pri;
	}
	public void setPri(Printer pri) {
		this.pri = pri;
	}
	public void display(){
		System.out.println("使用"+paper.getSize()+"进行"+pri.getInk()+"打印");
	}
	
}

测试类:

package com.ydl.ch04;

public class Test {
	public static void main(String[] args) {
		/*Paper pa1=new A4Paper();
		Printer pr1=new ColorPrint();
		System.out.println(pa1.getSize()+pr1.getInk());
		Paper pa2=new B5Paper();
		Printer pr2=new InkPrint();
		System.out.println(pa2.getSize()+pr2.getInk());*/
		A4Paper a4=new A4Paper();
		ColorPrint c4=new ColorPrint();
		NewPrinter n4=new NewPrinter();
		n4.setPaper(a4);
		n4.setPri(c4);
		n4.display();
		B5Paper b5=new B5Paper();
		InkPrint c5=new InkPrint();
		NewPrinter n5=new NewPrinter();
		
		n5.setPaper(b5);
		n5.setPri(c5);
		n5.display();
		
		n5.setPaper(a4);
		n5.setPri(c5);
		n5.display();
		
		n5.setPaper(b5);
		n5.setPri(c4);
		n5.display();
	}
}

Notes:

与C++不同,JAVA不用直接的多继承,而采用接口,实现多继承

静态:

静态方法的调用:尽量使用类名来调用,免得与普通方法弄混,当然JAVA编译器会帮我们进行优化

静态代码块:
不需要调用就会加载

 

下面附上小马哥笔记

Java面向对象(二)学习笔记

 

 static成员在JVM中的存储

Java面向对象(二)学习笔记

 

如何理解接口是一种能力

  1. 可以被多继承
  2. 设计和实现完全分离
  3. 更自然的使用多态
  4. 更容易搭建程序框架
  5. 更容易更换实现:比如插座,提供充电的功能,比如市场上所有插座的都是2-3个插口

Java面向对象(二)学习笔记