标签:面向对象 cme hide this 选择 共享 teacher col student
/* * static关键字: * 静态的属性和方法属于类的,使用的时候使用类名.属性名或方法名; * 非静态的属性和方法属于对象的,使用的时候需要先实例化对象(new),然后使用对象.属性名或方法名; * 非静态属性在当前类中不能静态的方法直接使用; * 静态方法和属性在当前类中可以被静态和非静态方法直接使用; * * 在Java中static修饰的函数不能被子类重写; * 被final修饰的父类函数是无法被重写; * 被private修饰的父类函数无法被继承。 * * 静态代码块: * static{Java代码块} * 静态代码块在类被第一次加载的时候第一个执行,并且只执行一次; * */
public class StaticDemo { String a = "非静态属性"; static String b = "静态属性"; static int c; static int d; static { System.out.println("这是静态代码块,在类第一次被加载的时候第一个被执行"); c = 5; d = 4; } public static void staticMethod() { System.out.println("这是静态方法!"); // System.out.println(a); //静态方法无法直接调用非静态属性 System.out.println(b); } public void unStaticMethod() { System.out.println("这是非静态方法!"); System.out.println(a); System.out.println(b); } public static void main(String[] args) { staticMethod(); // System.out.println(b); // unStaticMethod(); // System.out.println(a); System.out.println(b); StaticDemo sd = new StaticDemo(); System.out.println(sd.a); System.out.println(sd.b); } }
把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫类或者接口,抽象并不打算了解全部问题,而是选择其中一部分,暂时不用部分细节。
抽象包括两个方面:一个是数据抽象,而是过程抽象。
数据抽象:表示世界中一类事物的特征,就是对象的属性;
过程抽象:表示世界中一类事物的行为,就是对象的行为。
package demo; public class Teacher { //对属性私有化进行封装 赋值方法 取值方法 //没有私有化的属性也可以进行封装,但没有意义 private double money = 100; public void setMoney(double money){ this.money = money; } public double getMoney(){ return money; } }
package demo; public class Student { public static void main(String[] args) { Teacher t1 = new Teacher(); // System.out.println(t1.money); System.out.println(t1.getMoney()); t1.setMoney(200); System.out.println(t1.getMoney()); } }
Student stu = new Student();
package demo; public class OopDemo01 { static OopDemo od = new OopDemo(); public static OopDemo getInstance(){ return od; } }
3.通过工厂模式(代理模式)创建对象
package demo; public class FactoryDemo { OopDemo od; public static OopDemo getOopDemo(){ return new OopDemo(); } public OopDemo getOopDemo01(){ od = new OopDemo(); return od; } }
对象的一个新类可以从一个现有的的类中派生,这个过程称为继承。新类继承了原始类的特性,新类成为原始类的派生类(子类),原始类称为新类的基类(父类),派生类可以从他的父类那里继承方法和属性。
指允许不同类的对象对同一消息做出响应,多态性包括参数化多态性和包含多态性,多态性语言具有抽象/灵活/行为共享/代码共享的优势。方法的重写,重载与动态链接构成多态性,Java引入多态的概念原因之一就是弥补类的单继承带来的功能不足。
动态链接-->对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法。
标签:面向对象 cme hide this 选择 共享 teacher col student
原文地址:https://www.cnblogs.com/homelessdog/p/10572866.html