一、类与对象的概念
1.什么是类:
凡是被class修饰的都是类、 例如 public class 类名{ } 或者 class 类名{ }
概念:一个java文件中,可以存在多个类,但是只能且必须只有一个被public修饰的公共 类,且类名和文件名同名。
例如:Demo1.java文件中就存在了3个类、如代码所示
一个公共类 1个A类 1个B类
2.什么是对象:
类是不能被单独使用的。必须要将其实例化,才可以访问该类的方法或属性。
实例化的语法:
类名 变量名 = new 类名();
变量名.方法名();
变量名.属性名;
3.类的分类:
一般来说:类都是放在包下。
不同的包拥有不同的功能,。方便分类进行管理。
目前而言:我们暂时只需要知道这三个包。
1.测试包(test):放测试类 (拥有main方法的类)
2.工具包(util):放工具类,经常被复用的方法。
3.实体包(entity):放实体类,真实存在的一个物体,例如学生,商品,用户,老师 等等
二、Java的变量分为两大类
java的变量分为两大类:
1.成员变量:定义在方法体之外的。有效范围:该类都有效。
有默认值(如果不给它赋值,有一个默认值)都和0对齐
byte short int long float double 默认值都是0
boolean 默认值为false
char 默认值为 空格
引用类型:null
2.局部变量:定义在方法体之内的。有效范围:该方法下有效。 没默认值。
注意:变量必须要赋值才能使用。
三、Java的数据分为两大类:基本数据类型和引用数据类型
其中基本数据类型分为8大类:
按照所占字节的:
1字节 boolean byte
2字节 char short
4字节 int float
8字节 long double
引用数据类型:
除了8大类剩下的都是引用。
例如String Scanner System Arryas Class
四、形参和实参的区别
形参:声明方法的参数列表,例如下面的a1和a2
实参:调用方法的参数列表,例如下面的10和20
method(10,20);
public void method(int a1,int a2){
}
如果形参是基本数据类型和引用数据类型的区别。
看本类的例子:
总结:
如果形参是基本数据类型,那么方法内部的改变不会影响其本身。
如果形参是引用数据类型,那么方法内部的改变会影响其本身。
五、为什么要对类进行封装
1.为什么要对类进行封装:
原因:将类的相关属性进行隐藏,不对外开放。避免一些安全性问题。
2.封装最常见的例子:就是针对实体类。
3.需要掌握如何正确编写实体类。
六、面向对象的三大特征:封装、继承、多态
集成概念如下:
如果不同的类之间拥有相同的属性或方法,
那么可以将这些方法或属性单独抽取出来组成一个父类,
让别的类去继承它,别的类就可以少写很多方法和属性。
这就是面向对象三大特征之一的继承。
Java中的继承和现实生活的继承非常类似。
子承父业。 父不能承子业。
子类拥有父类的方法属性,但是父类没有子类的方法或属性。
创建一个Student类,拥有studentNum,name,age,sex 4个属性。
还拥有:可以打印“我可以说话”的方法,可以打印“我可以吃饭”的方法,
可以打印“我可以上课”的方法
创建一个Teacher类,拥有teacherNum,name,age,sex 4个属性。
还拥有:可以打印“我可以说话”的方法,可以打印“我可以吃饭”的方法,
可以打印“我可以教书”的方法
分析:上述写法有何不妥。
总结:老师类和学生类中 含有相同的属性或方法。
我们推荐将其放在另外一个Person类中
然后让Teacher类和Student继承Person类即可
怎么继承一个类:
语法如下:
class A extends B{
}
我们称A为子类,B为父类。
额外补充:
Java是单继承的语言。每个类最多只能显式继承一个类。
但是每个类可以被多个类同时继承。
每个类都隐式继承Object类,Object是任何类的父类。
子父类中成员变量的特点:
假如存在特殊情况:
子类和父类都拥有相同的成员变量属性、
通过实例化 调用子类的属性 到底是用的子类的还是父类的。
答案:实例化的谁,就用的谁。
假如说想在子类的内部方法共有属性,应该怎么写?
如果直接通过属性名,就默认表示子类。
也可以通过this.属性名 来表示子类
如果想使用父类的共有属性 加上super关键字即可 例如super.money
子父类中成员方法的特点:
子承父类:如果子类没有才继承父类的相关属性或方法。
特殊情况:如果子父类拥有公共的方法,到底调用的谁的?
答案:和成员变量一致。
子父类中构造方法的特点:
1.利用开发工具自动生成的构造方法,内部的第一行都有一行super();注意:只能放在第一 行
2.super();表示父类的无参构造方法
3.super();如果每写就默认存在,如果写了就只会以写了的为主。