java语言的特点:
* 1、面向对象
*
* 面向对象的特点: 封装、继承、多态
*
* 1、类与对象的关系
*
* 类:物以类聚 人以群分
*
* 类:将具有相同特征和行为的事物,进行抽象化形成一类
* 类的特点:
* 1、相同特征和行为
* 2、抽象化的
*
* 对象: 就是类的一个具体的实例
*
* 类与对象的关系:
* 1、类是抽象化的,对象是类中具体的实例,每个实例都有该类的特征和行为
* 2、对象是类的具体实例,一个类可以有多个实例,一个对象就属于一个类
*
*
* java中类:
* 1、类的语法:
* public class 类名{
* 代码
* }
*
* 类的特征:成员变量(属性)
* 类的行为:成员方法(非静态方法)
* 成员变量、成员方法 是属于对象的属性和行为
*
*
*
* 类是一张图纸,规定了该类所有的特征和行为
*
* 对象根据类这个图纸来实例化的,那么只要是该类的对象,都具有该类的特征和行为.
类的特征: 成员变量
* 类的行为: 成员方法
*
* 对象怎么创建:
* 对象都是用该类的构造方法创建的
*
* 什么是构造方法:
* 构造方法就是一个特殊的方法,没有返回值也不需要写void
* 构造方法名必须和类名保持一致
*
* 语法:
* public 类名( [参数列表] ){
* 代码;
* }
*
* 构造方法的调用方式:
* 只能通过new 关键字调用
* new 构造方法名();
*
* 构造方法的作用:
* 1、创建本类的对象
* 2、初始化成员变量
*/
//构造方法---- 无参构造
public ClassAndObject02(){
}
//主方法
public static void main(String[] args) {
//创建本类的对象 -- 通过new关键字 调用构造方法
// 对象本身是引用数据类型,需要赋值给该类的一个变量
ClassAndObject02 object = new ClassAndObject02();
System.out.println(object);
构造方法:
* 作用
* 1、创建本类的对象
* 2、初始化成员变量
*
* 成员变量(属性):
* 位置:在类中,方法的外面
* 数据类型 变量名 [ = 值 ];
* 访问:
* 对象.属性
*
* 作用范围:整个类中
*
* 内存位置:
* 内存: 栈 、堆、常量池、本地方法区
* 成员变量存放位置:堆
*
* 构造方法的特点:
* 1、构造方法名必须和类名保持一致
* 2、构造方法没有返回值,也不需要写void
* 3、一个类中如果没有显示的表明无参构造,虚拟机会默认提供一个无参构造方法
* 4、一个类中定义了有参数的构造方法,虚拟机不再提供无参构造,需要手动添加
*/
//成员变量 -- 对象的属性
String name ;
int age ;
//无参构造 alt + shift + s 选Generate最后一个
public Construct01() {
}
//有参构造
public Construct01(String a , int b ){
name = a;
age = b ;
}
//主方法
public static void main(String[] args) {
//调用无参构造方法
//自己生成相对应类型的变量
//alt + shift + L 自己起变量名
Construct01 c = new Construct01();
System.out.println(c.name); // null
System.out.println(c.age); // 0
//创建对象
Construct01 con = new Construct01("张三",20);
System.out.println(con.name); // 张三
System.out.println(con.age); // 20
}
}
值传递:
* 1、参数是基本数据类型
* 2、参数是引用数据类型
*/
/**
* 自己定义的方法
* @param i
*/
public static void m1(int i){
i++;
System.out.println("m1--------->" + i); // 11
}
//主方法
public static void main(String[] args) {
int a = 10 ;
ValuePass01.m1(a);
System.out.println("main------->" + a); //11 10
}
}
* 值传递:
* 1、参数是基本数据类型
* 2、参数是引用数据类型
*/
//属性 -- 成员变量
String name ;
int age ;
public static void m2( ValuePass02 v ){
v.name = "葫芦娃" ;
v.age = 10 ;
//System.out.println("m2 姓名:" + v.name); //葫芦娃
//System.out.println("m2 年龄:" + v.age); //10
}
public static void main(String[] args) {
ValuePass02 val = new ValuePass02();
System.out.println("main 姓名:" + val.name); //
System.out.println("main 年龄:" + val.age); //
//调用m2方法
ValuePass02.m2(val);
System.out.println("main 姓名:" + val.name); //葫芦娃
System.out.println("main 年龄:" + val.age); //10
}
/**
* 作业:
* 声明一个狗类 Dog类 :
* 属性:
* color: 颜色
* size : 大小
* type : 品种
*
* 在main方法中创建两个Dog类的对象
* 对象1 访问属性,输出的是默认值
*
* 对象2访问属性:
* color : 灰色
* size : 大型犬
* type : 阿拉斯加雪橇犬
*
* 在自定义的方法中,输出的对象1的属性是:
* color : 白色
* size : 中型犬
* type : 西西伯利亚雪橇犬
*/
}