类和对象和定义,关系
构造函数的语法,用法
什么事面向对象
Java是一门面向对象的语言,什么是对象?在Java中,一切事物皆可以看作对象,比如人,自行车,电脑,港币,汽车,电灯泡等等、拿人来举例,每一个人都可以看成一个对象,、
每个人都有属性:姓名 性别 年龄 身高等等,以及吃饭睡觉学习等行为,这在Java里体现为每个对象都有属性和函数,我们谈论一个人的姓名 年龄这些属性或者吃饭睡觉这些行为都是建立在具体的某个对象的基础上,没有具体的对象,那这些都不存在。这个就是咱们Java面向对象的一个思想
面向对象的两个最重要的概念:类与对象
类:共性事物的抽象,是对某一类具有共性实物的描述,是概念上的定义
对象:对象是共性事物的一个体现,是这类事物的每个个体,或者说是类的一个实例(instance)
总结:类是对象的模板。对象是类的实例
对象的性质
什么事对象
一个对象是数据和相关方法的集合,对象是一个类事物中的一个实例,数据是对象的状态,方法是对象的行为
对象特点
面向对象概念构成了Java的核心,面向对象具有封装 继承 多态三大特征
类和对象的定义
类的组成:属性和方法
class类软件测试需求分析.note名称{
数据类型 属性;//声明成员变量(属性)
.....
public 返回值数据类型 方法名称(参数1,参数2...){
//TODO 程序语句
[return表达式;]
}
}
对象的创建与使用
类名称 对象名称=null;//声明对象
对象名称=new 类名称();//实例化对象,对象必须要实例化才能直接使用。不实例化指那个在main方法里面使用
或:
类名称 对象名称=new 类名称();
有了对象,就可以调用定义的一系列操作了
public class BianLiang {
private int age;
private String name;
private int height;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public static void main(String[] args) {
BianLiang p = new BianLiang();//对象实例化
p.eat();p.sleep();//访问方法
p.name="周诺";//给成员变量赋值
p.age=26;
p.height=163;
System.out.println(p.age);//访问成员变量
System.out.println(p.name);
System.out.println(p.height);
控制台:
吃饭
睡觉
26
周诺
163
访问类中的属性和方法:
访问属性:
对象名称.属性名
为属性赋值: 对象名称.属性名=值;
访问方法:
对象名称.方法名();
构造函数的概念及分类
构造函数的概念
构造函数是用来构造对象的函数
构造函数分类
无参构造函数(默认构造函数) 不写也可以,系统会默认创建一个无参构造函数
带参构造函数 参数就是为了赋值的
语法 类名
无参构造函数:修饰符+函数名(){......}
public Person(){
..........2 ...........
} 类名
带参构造函数:修饰符+函数名(参数类型 参数名...){.....}
public Person(int age,String name){
......... ............
}
public BiL (){
System.out.println("调用无参构造函数"); //无参构造函数
}
public static void main(String[] args) {
BiL P = new BiL(); //即使上面的无参构造函数不申明,也可以调用对象。系统会自动申明
有参构造函数
public class BiL {
private int age;
private String name;
private int height;
public BiL(int age,String name,int height){
this.age=age;//this代表类名(BiL),this.age调用的是上面申明的成员变量。等于号右边age就近原则就是括号里刚刚申明的形参的值
this.name=name; //意思是把形参的值赋值给类中对应的成员变量
this.height=height;
}
public void eat(){
System.out.println(this.name+"i want to eat");
}
public void sleep(){
System.out.println(this.name+"i want to sleep");
}
public static void main(String[] args) {
BiL P = new BiL(28,"周诺",180);//有参构造函数传参
P.eat();P.sleep();
System.out.println(P.age);
System.out.println(P.name);
System.out.println(P.height);
}
}
控制台:
周诺i want to eat
周诺i want to sleep
28
周诺
180
注意:static方法里面不能使用this
空白处右键-source-Generate Constructor using Fileds-可以全选
权限后eclipse可以帮你自动生成有参构造函数,不选的话就会生成无参构造函数。
public BiL(int age, String name, int height) {
super();
this.age = age;
this.name = name;
this.height = height;
}
帮你自动生成
都不选的话,会生成如下:无参构造函数
public BiL() {
super();
}
语法详解
函数返回值:无
参数类型:八大基本类型/引用类型
函数调用注意事项
构造函数的调用
我们通常只在一种情况下才会去调用构造函数,那就是创建对象,调用构造函数时,用关键字new来调用,方法是:
类名 对象名=new 类名();
或者:类名 对象名 =new 类名(value1,value2......)
调用带参构造函数来创造对象,可以按照我们的医院来初始化对象的属性,而调用无参构造函数构造出来的对象,她的所有属性都是他的属性对应类型的默认值
默认构造函数是自带的,编译器在编译你的Java代码的时候,若发现你的类里面有调用无参构造函数创建对象,但是你的类里面又没有显示的声明无参构造函数,那么类编译器就会自动帮你补齐这个无参构造函数,(类里面没有定义带参构造函数)。如果你的类里有定义带参构造函数,那默认构造函数就被覆盖掉了,此时若要调用午餐构造函数则必须显示定义无参构造函数,否则会报错
构造函数构造对象是的内存分配
创建如下对象时,Java内存分配是如何的呢
CAR car1=new car();
CAR car2=new car("宝马”,100);