-
equals()方法比较的是对象的引用是否指向同一个地址,在类名 对象名=new 类名()时,每new一次会开辟一个新的内存地址,每次的并不相同
equals语句返回值是布尔型,通常与if配合使用
【当new一个类的时候得到的对象是类的对象,如果这个对象调用getClass()方法得到的是类对象//类对象关注的是类的代码信息,即类的属性名,方法名等,类的对象关注的是类的数据信息,即具体值】
如果要用变量名即对象名来判断两个对象名中的属性值是否相等时,则要改写equals()方法,【通过resource中查找】【引用格式 对象名.equals(另一个对象名)】使其达到目标equals一般情况下等于双等号“==”,二者可替换
Object类
equals()方法
比较的是对象的引用是否指向同一块内存地址
Dog dog = new Dog();
dog是内存当中的地址
object提供的equals方法:
1.比较两个对象是否相等?意思是两个对象指向的是不是同一个地址
2.类对象和类的对象的区别:
类对象:主要考察的是类的方法和属性的数量及其名字
类的对象:主要考查的是方法的功能和属性的值
查看全部 -
object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这类默认继承object类。
object类中的方法,适合所有子类。
toString方法在object类里面定义toString方法的时候返回的对象的哈希码。可以通过重写tostring()方法表现出对象的属性。
Dog对象 print(dog)输出的是dog对象的内存地址.
直接打印对象,会返回对象的hash码,可以通过toString()重写表现出对象的属性
查看全部 -
接口:定义了某一批类需要遵守的规范,规定了这些类里必须提供某些方法,用来被继承、实现;
接口定义:和定义类不同,定义接口不使用class,而是使用interface关键字;接口定义的仅仅是实现某一特定功能的一组方法的对外接口和规范,而并没有真正地实现这个功能。这个功能的真正实现是在“继承”了这个接口的各个类中完成的,由这些类来具体定义接口中所有抽象方法的方法体。
接口定义的基本语法:
(public) interface 接口名【extends 父接口...】
{ public (static final) 类型 常量名=常量;
public (abstract) 返回值类型 抽象方法名 (参数列表);}
使用接口:实现接口使用implements关键字。java中一个类只能继承一个父类,不够灵活,可以通过实现多个接口进行补充
接口实现的语法:
(修饰符) class 类名 (extends 父类) implements 接口...{ }
接口的引用:
接口名 对象名=new 实现了接口的类名( );
对象名.接口中的抽象方法名( );
查看全部 -
//匿名内部类 方法一 IPlayGame ip3 = new IPlayGame(){ public void playGame(){ System.out.println("使用匿名内部类的方式实现接口");} }; //方法二 ip3.playGame(); new IPlayGame(){ System.out.println("使用匿名内部类的方式实现接口"); }.playGame();
查看全部 -
接口中的方法都是抽象方法
变量都是静态常量
查看全部 -
定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
查看全部 -
Java 中的内部类
概念:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类
内部类的主要作用如下:
(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
(2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据
(3)内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
内部类可分为以下几种:成员内部类
静态内部类
方法内部类
匿名内部类
查看全部 -
Java中的this关键字:
this关键字代表当前对象
(1)this.属性 操作当前对象的属性
(2)this.方法 调用当前对象的方法
封装对象的属性的时候,经常会使用this关键字
查看全部 -
super关键字:在对象的内部使用,可以代表父类对象
访问父类属性:super.age 访问子类属性:age
访问父类方法:super.eat() 访问子类方法:eat()
子类的构造过程中必须调用其父类的构造方法。
如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法。
如果显式地调用构造方法,必须在子类的构造方法的第一行。
如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译出错
查看全部 -
final关键字: 表示“最终的”,即不可修改。
final可以修饰类、方法、属性和变量
1、修饰类:不允许被继承
2、修饰方法:不允许被重写
3、修饰属性:则该属性不会进行隐式初始化(不会自动初始化),需要手动初始化或者在构造方法中初始化 (但二者只能选一,即只能初始化一次后便不能更改)
4、修饰变量,只能在声明的时候赋一次值,成为常量。 (static final 会使其成为全局常量)
查看全部 -
Java中的包
包的作用:1)管理Java文件
2)解决同名文件冲突
2.定义包:package包名
3.系统中的包:java.(功能).(类)
java.lang.(类) 包含Java的语言基础类
java.util.(类) 包含Java语言中各种工具类
java.io.(类) 包含输入、输出相关功能的类
4.包的使用
(1)可以通过import关键字,在某个文件使用其他文件中的类
(2)Java中,包的命名规范是全小写字母拼音
(3)使用的时候不但可以加载某个包下的所有文件,也可以加载某个具体子包下的所有文件
查看全部 -
继承的初始化顺序
先初始化父类再初始化子类
先执行初始化对象中属性,再执行构造方法中的初始化
父类对象→属性初始化→构造方法→子类对象→属性初始化→构造方法
查看全部 -
封装
概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
好处:1)只能通过规定的方法访问数据
2)隐藏类的实例细节,方便修改和实现
封装的实现步骤:
1)修改属性的可见性(设为private)
2)创建getter/setter方法(用于属性读写)
3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)
查看全部 -
方法的重写:
如果子类对继承父类的方法不满意,可以重写父类继承的方法。
当调用方法时优先调用子类的方法。
语法规则:
(1)返回值类型 (2)方法名 (3)参数类型及个数
需要都和父类继承的方法相同,才叫方法的重写。
查看全部 -
继承:是类与类之间的一种关系,是一种"is a"的关系。
注:Java中的继承是单继承
好处:1、子类拥有父类的所有属性和方法。【private修饰无效】
2、实现代码复用。
语法:class 子类 extends 父类
eg: class Dog extends Animal{
}
查看全部
举报