【Java】Java面向对象
来源:互联网 发布:淘宝什么店铺女装好看 编辑:程序博客网 时间:2024/05/04 06:59
//=================面向对象知识======================public class OOBase {private static final long LEVEL = 20150701;/* * 使用继承时父类成员将被子类继承,如子类中未定义同名变量,父子类将共享该成员。 * 此时super和this访问的是内层中的同一个变量 * 只有子类覆盖父类成员时,super和this才访问不同变量。 * 注意:只要有使用父类成员的情况都应明确指定super或this * 防止出现后期添加变量时时出现命名分歧 */@Testpublic void test2() {Eg_2 eg_2 = new Eg_2_1();eg_2.print();}class Eg_2 {int a = 1;int b = 2;public void print() {}}class Eg_2_1 extends Eg_2 {int a = 3;public void print() {System.out.println(super.a == this.a);// falseSystem.out.println(super.b == this.b);// true}}/* * static变量的调用要看类型,而不是看对象 */// @Testpublic void test3() {FOO foo = new FOO();Sub sub = new Sub();System.out.print(FOO.FOO);// fooSystem.out.print(Sub.FOO);// subSystem.out.print(foo.FOO);// fooSystem.out.print(sub.FOO);// subSystem.out.print(((FOO) sub).FOO);// foo}class FOO {public static final String FOO = "foo";}class Sub extends FOO {public static final String FOO = "sub";}/** * 接口中可以定义静态内部类 */interface MyInterface {static class Inner {int i, j, k;public Inner() {}void f() {}}}}/* * 继承内部类 */class WithInner {abstract class Inner {abstract void f();}}class InheritInner extends WithInner.Inner {// ! InheritInner() {} // Won't compile// 构造器必须使用这样的语法去显示的调用外部类的构造方法InheritInner(WithInner wi) {wi.super();}public static void main(String[] args) {WithInner wi = new WithInner();InheritInner ii = new InheritInner(wi);}@Overridevoid f() {}}// 如果重写方法的返回值类型是基本数据类型,那么返回值类型必须相同class AA {protected Number method(int a, int b) {return 2;}}class CC extends AA {public Integer method(int a, int b) {short s = 1;return 1;}}class AAA {protected int method(int a, int b) {return 2;}}class CCC extends AAA {public int method(int a, int b) {// 返回值类型为short则报错,只要不同就报错short s = 1;return 1;}}/** * 创建过程描述: * 1、加载Son类字节码文件,为其实例变量i开辟空间(开辟空间就可以为其赋值为默认值,原因见二进制示例)并不会为其赋值2 * 2、判断Son是否有父类,没有则调用Son的构造方法,为其实例变量赋值并执行其他初始化代码 * 3、如果有父类,则按照1-2的步骤初始化其父类,其父类再有父类仍按照该步骤执行 * 程序输出:0 2 3 输出0的原因:注意this真正所指代的对象,如果把所有默认的this都加上,就会明白(详见程序中注释) * @author soft01 * */class Son extends Parent {int i = 2;//1、i = 0Print a = new Print("子类参数初始化");public Son() {//2、this.super();//5、i=2;Print a = new Print("子类构造函数");this.print();i = 3;}void print() {System.out.println("子类方法调用");System.out.println(i);}public static void main(String[] args) {System.out.println(new Son().i);}}class Parent {int j = 4;//3、j= 0Print a = new Print("父类参数初始化");public Parent() {//4、j=4Print a = new Print("父类构造函数");/* * 由于第二步,调用对象为Son,这里的this也为Son, * 所以调用了Son中的方法,而这一时刻Son的i还未赋值2,其值为0 */this.print();int j = 5;}void print() { System.out.println("父类方法调用"); System.out.println(j);}}class Print {public Print(String i) {System.out.println(i);}}/* * 方法中的语句一定是按照顺序执行的 */class Try{@Testpublic void test(){new Beta().testFoo();}}interface Foo {int bar();}class Beta {class A implements Foo {public int bar() {return 1;}}public int fubar(Foo foo) {return foo.bar();}public void testFoo() {// 这里下面的类A还没有加载,所以创建的是上面类A的对象A a = new A();System.out.println(a.bar());//输出:1 class A implements Foo {public int bar() {return 2;}}System.out.println(fubar(new A()));//输出:2 就近原则,使用最近的内部类}}
0 0
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- 【java】java面向对象
- 【Java】Java面向对象
- Java面向对象概述
- java面向对象
- JAVA面向对象
- JAVA 面向对象??
- Java面向对象特性
- Java面向对象特性
- java基础 面向对象
- Java面向对象程序设计
- java面向对象
- Java 面向对象编程
- Java构建工具对比:Ant vs Maven vs Gradle
- 你与优秀程序员之间的差别本质!
- LeetCode_Merge Two Sorted Lists
- nyoj 1058 部分和问题 【简单DFS】
- linux 小技巧总结
- 【Java】Java面向对象
- Window Server 2008 R2密码清除
- php语言_数据结构_树_学习笔记
- Android 查看应用的CPU使用率
- python执行系统命令的方法os.system()
- Mean-shift Blob Tracking through Scale Space 阅读笔记
- Java:注解(Annotation)
- linux生成奔跑着的火车有趣动画步骤
- linux中级教程-中级shell