类实例化方法——new、反序列化、反射、克隆。
事物认识过程:接触新事物——>有什么特征(属性)——>干什么用(功能,方法)——>怎么用(方法的具体实现)
package Farmpackage; *接口特点:没有构造器;public/abstract——接口; static/final——属性、方法都是抽象的;接口间多继承;类可以扩展另一个类,同时实现多个接口。 *功能——使上传型为多个类型(定义类型);防止客户端实例化,确保仅存一个该接口; interface AddGrassable { |
package Farmpackage; *抽象类(abstract)——至少包含一个抽象方法(可有实例化方法); public abstract class Product { *final——方法不能重写,类不能继承,属性不能更改。 public static final int MAX_COUNT=40;//(最大产量)定义常量标准格式 private String name; private boolean isRipe; private int forNum=0; public static final int MAX_FORNUM=4; protected int prodectCount=MAX_COUNT; public Product(String string){ name=string; isRipe=false; } *定义方法 public void getProdects(){ System.out.println(name+"收获了"+prodectCount+"kg农产品"); } public boolean isRipe(){ if(forNum==MAX_FORNUM){ return true; }else{ forNum+=1; return false; } } public abstract void steal(int num); *抽象方法:只允许声明,不允许实现+不能用"final"修饰; * 实例化由子类完成 public abstract void addBug(int num); public String getName() { return name; } } |
package Farmpackage; public class FarmTest { * 类变量和方法——static public static void main(String[] args) { Player t = new Player("张山"); Product p = new Field("张山的牧场", "山羊"); t.doBadThing(p); System.out .println("---------------------------------------------------"); p = new Farm("张山的农田", "胡萝卜"); t.doBadThing(p); } } | |||||||||||||||||||||||||
package Farmpackage; *封装的表现:隐藏——访问修饰符、模块化{} *setAccessable()用于设置封装性,更改后可使用一次 |
package Farmpackage; *有血缘关系的,一脉相承的才叫继承,得到的是其的裸体;而接口是附属物,是其可有可无的装饰,没有接口他还是他。没有了继承他就不再是他——接口与继承的关系
*方法的重写:纵向;一切(方法名、参数、返回类型)不变,只是改变实现;访问权限只能改小; *方法的重载:横向;方法名同,参数(个数、类型)不同 public class Field extends Product { private String animalName; public Field(String string, String animalName) { super(string); this.animalName = animalName; } public void addBug(int num) { System.out.println("你在" + this.getName() + "放了" + num + "只害虫"); prodectCount -= num; } *内部类——匿名内部类; * 方法的内部类——不能用访问修饰符修饰;不能为static;用作传给该方法的参;final修饰的该方法变量;引用方法的局部变量, * 匿名内部类——没有类名和构造函数;申明时就实例化; public void steal(int num) { System.out.println("你偷取了" + this.getName() + num + animalName); prodectCount -= num; } } |
package Farmpackage; public class Player { private int badthingNumber; public Player(String string) { public void doBadThing(Product p) { * 多态——方法根据不同类型的参数执行出来的结果也不同。 |