-
方法的重写:子类重写父类的方法,调用时优先子类;查看全部
-
继承,提高代码的复用性查看全部
-
方法内部类: 1.定义在外部类方法里,只在方法的内部可用; 2.不能使用访问控制符和 static 修饰符;查看全部
-
package com.imooc.animal; /** * java中引用类型的转换 * 1,自动类型提升 ,向上类型转换 * 2,强制类型转换,向下类型转换 * 注意:为了避免强制类型转换所带来的安全问题, * 可以使用关键字instanceof,通常也会配合上使用if语句 * */ public class Test { public static void main(String[] args) { Dog dog =new Dog();//创建子类对象,让子类对象的引用指向子类对象 Animal animal =dog;//自动类型提升,向下类型提升,将子类的引用赋值给父类的引用 if(animal instanceof Dog){ Dog dog2=(Dog)animal;//强制类型转换,向下类型提升,将父类的引用赋值给子类的引用 } else{ System.out.println("抱歉无法转换为Dog类型的引用"); } /*强制类型转换的时候会出现安全隐患 * 将指向狗的引用赋值给猫类型的引用 * Exception in thread "main" java.lang.ClassCastException: com.imooc.animal.Dog cannot be cast to com.imooc.animal.Cat at com.imooc.animal.Test.main(Test.java:20) 为了解决这个问题,在进行强制类型转换的时候,可以使用instanceof关键字进行判断 * */ if(animal instanceof Cat){ Cat cat=(Cat)animal;//编译时按照 Cat类型,但是运行的时候用的是Dog类型 } else{ System.out.println("抱歉无法转换为Cat类型引用"); } } }查看全部
-
外部类名 外部类对象名=new 外部类构造函数; 内部类名 内部类名=外部类对象名.new 内部类构造函数; 内部类名.内部类对象的方法名查看全部
-
1. 静态方法中可以直接调用同类中的静态变量,但不能直接调用非静态变量。如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。 2. 普通成员方法中则可以直接访问同类的非静态变量和静态变量。 3. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。 4. 普通成员方法中能直接调用非静态方法和静态方法。查看全部
-
局部变量和成员变量的区别: 1.作用域不同:局部变量作用域是方法内部;成员变量作用域是整个类。 2.初始值不同:java给成员变量赋初始值,不给局部变量赋初始值。 3.在同一个方法中,不可以有重名的局部变量;在不同的方法中,局部变量可以重名。 4.局部变量和成员变量重名时,局部变量的优先级比成员变量高。查看全部
-
局部变量和成员变量的区别: 1.作用域不同:局部变量作用域是方法内部;成员变量作用域是整个类。 2.初始值不同:java给成员变量赋初始值,不给局部变量赋初始值。 3.在同一个方法中,不可以有重名的局部变量;在不同的方法中,局部变量可以重名。 4.局部变量和成员变量重名时,局部变量的优先级比成员变量高。查看全部
-
1. 类体由两部分组成: 一是变量的定义; 二是方法的定义(一个类中可以有多种方法); 2. 在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效。在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效。 3. 成员变量又分为实例变量和类变量(statistic静态变量)。实例变量指的是类的一个实例,就是一个对象,实例变量属私有,某一个对象将其值改变,不影响其他对象;类变量是类中的静态变量,被类中所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果。类变量如果用public声明则作用域同全局变量,如果是private则作用域只在类的内部。 例: public class A{ static int a = 0; //类变量 private int b = 0; //实例变量 } public class B{ public void main (String[] args){ A a1 = new A(); A a2 = new A(); a1.a = 3; // 等同于 A.a = 3; a1.b = 4 ; System.out.println(a2.a); //结果为3 //类变量是针对所有对象的,所以a1改变a,a2的a也改变 System.out.println(a2.b); //结果为0 //实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量 } }查看全部
-
牢记,不清楚的时候看一下代码查看全部
-
静态内部类是 static 修饰的内部类,这种内部类的特点是: 1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员 3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();查看全部
-
内部类中访问外部类中的同名属性:外部类.this.外部类的同名属性查看全部
-
综合练习题目要求查看全部
-
成员内部类的使用方法: 1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等; 2、 Inner 类中定义的方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性; 3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( ); 4、 编译上面的程序后,会发现产生了两个 .class 文件 其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class 另外,友情提示哦: 1、 外部类是不能直接使用内部类的成员和方法滴 可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。 2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:查看全部
-
内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便 内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类 创建内部类的对象如图:内部类名 对象名 = 外部类名.new 内部类的构造方法;查看全部
举报
0/150
提交
取消