关于学习Java的第一天心得
(可能有错误,还需要不断改进啊。。。。。)
1. super父类的对象引用;
super其实就是继承的父类的一种对象,所以才能够直接通过它调用所继承的父类方法。
super使用于构造方法之中,即便不写,也是默认存在。(上图是父类方法,下图是子类方法)
当然super也可以直接引用父类的某些特定非私有(不是用private修饰)方法,可以使用super().方法名();这样在子类中就可以引用了。
2. 记录一下部分要用的快捷键;(使用在eclipse中)
(1)Ctrl+shift+f: 简单的快速排版
(2)Ctrl+shift+/:快捷注释/* */
(3)Ctrl+shift+c:快捷注释//,或者去掉//
(4)Ctrl+shift+\:快捷删除注释
(5)Alt+/:可以进行智能选择添加或者修改(可能会改错,最好还是自己知道的);
3. 记录今天学的object类和string类中的方法;
(1)首先object中有equals方法;
这个只是单纯比较了对象地址,也就是参数。
(2)String类中equals方法;
4.封装
就是指将数据进行分离,形成私有和公有,这样就能通过一些方法(get和set)使得某些数据只能修改而不能够读取,或者只能读取不能修改。
(1)这里有一个javabean;
javabean是一种可重用的组件,一般是由简单的set和get方法组成;(可以直接通过鼠标右击,点击source直接找到Getters和Setters进行方法创建)如下图:
5.多态
首先要有继承,重写和父类的类型指向了子类的对象。
就我的理解什么叫父类的类型指向了子类的对象,就是指在某个方法中可以参数类型使用的是父类的,但是在真正赋值时,对象却又是子类的对象,为此我也举了一个例子,以便以后还能看的懂。
public class TextPoly {
static void Say(Animals a) {//这里就是指父类的那个类型Animals
a.shout();
}
public static void main(String[] args) {
Animals animals = new Animals();//这里就是创建子类的对象;
animals.shout();
Dogs dogs = new Dogs();
dogs.shout();
Cats cats = new Cats();
cats.shout();
}
}
class Animals{
public void shout() {
System.out.println("叫一声");
}
}
class Dogs extends Animals{
public void shout() {
System.out.println("狗叫");
}
}
class Cats extends Animals{
public void shout() {
System.out.println("喵叫");
}
}
总而言之使用多态可以不用写那么多的重写的方法;
6.对象转型(casting)
(1)自动向上转型,是指子类自动转为父类;
(2)强制向下转型,是指父类对象必须要强制转型才能通过这个对象引用子类的某些方法;
public class TextPoly {
static void Say(Animals a) {
a.shout();
}
public static void main(String[] args) {
Animals animals = new Animals();
animals.shout();
// Dogs dogs = new Dogs();
Animals dogs = new Dogs();// 这就是自动向上转型;
dogs.shout();
// 如果子类有什么特殊的方法,那就必须要将对象强转才能调用;这里特殊的方法就是指不是通过重写的方法;
Dogs d1 = (Dogs) dogs;// 就是在这里进行墙转;
d1.sing();
Cats cats = new Cats();
cats.shout();
}
}
class Animals {
public void shout() {
System.out.println("叫一声");
}
}
class Dogs extends Animals {
public void shout() {
System.out.println("狗叫");
}
public void sing() {
System.out.println("汪汪汪");
}
}
class Cats extends Animals {
public void shout() {
System.out.println("喵叫");
}
}
classCastException:类转型错误;