目录
一、面向对象
对象:在Java程序中,一切皆为对象,从main出发依次执行,先有对象才能依次执行
类:一类事务的抽象描述,比如水果类、动物类、学生类以及老师类
对象的特征:属性
对象的行为:方法
共性的抽取:特征与行为是属于对象的,但其他的对象也有;所以在我们设计程序时,可以把共性的特征与行为抽取到类中,表示类的特征与行为,比如说动物都可以吃,学生类要学习,老师类要上课
步骤:实例化对象、调用属性、打印属性、对象调方法以及实例化多个对象
class Personman{
String name;//成员变量
public Personman() {//调用无参构造的实现
System.out.println("调用无参构造实现");
}
public void zhoncha() {
System.out.println(name+"正在种茶");
}
}
public class canshu {
public static void main(String[] args) {
Personman person = new Personman();//实例化一个对象
//无参构造调用
person.name = "小米";//给对象的属性赋值
person.zhoncha();//对象调方法
}
}
class Student{
String name;
//共性的抽取
public void play() {
System.out.println(name+"看电视剧");
}
}
public class test1 {
public static void main(String[] args) {
//实例化多个对象
Student yjj= new Student();
yjj.name = "吴彦祖";
yjj.play();
Student yjw= new Student();
yjw.name = "梁朝伟";
yjw.play();
}
}
二、局部变量与成员变量
区别:
出现位置:局部变量出现在方法体中,成员变量出现在类中
存储位置:局部变量在栈区,成员变量在堆区
作用域:成员变量作用在整个域中,局部变量出了方法体就失效
默认值:局部变量没有默认值,必须先赋值才能使用,成员变量在整个类中都可以使用
重叠冲突情况:局部变量会覆盖成员变量,作用域小的会覆盖作用域大的
案例:
class Person{
String name;
public void eat() {
String name = "小米";
System.out.println(name+"在吃饭");//重叠冲突是,小的作用域会覆盖大的作用域
}
}
public class test2 {
public static void main(String[] args) {
Person yjj = new Person();
yjj.name = "吴彦祖";
yjj.eat();//这里要加前缀
}
}
三、方法重载
在一个类中,方法名相同,参数个数或类型不同,方便管理方法的调用
class People{
public void eat() {
System.out.println("小米在吃饭");
}
public void eat(int a) {
System.out.println("小米在吃菜");
}
public void eat(String a) {
System.out.println("小米在吃药");
}
}
public class test3 {
public static void main(String[] args) {
People xm = new People();
xm.eat();
xm.eat(999);
xm.eat("888");
}
}
四、构造方法
组成:方法调用与方法实现构成
分类:有参构造和无参构造
实例化的过程:开辟空间、给属性赋初始值、调构造方法实现以及将空间赋给引用变量
class Superman{
String name;
public Superman() {}//这是无参构造实现
//带参构造属于是无参构造加上赋值
public Superman(String n){//带参构造实现
name = n;
}
public void drink() {
System.out.println(name+"在喝酒");
}
}
public class you_test {
public static void main(String[] args) {
Superman te = new Superman("小明");
te.drink();
//系统不会生成无参构造
Superman te2 = new Superman();
}
}
五、this关键字
this表示当前对象,this在那个方法,this就代表谁
this可以调属性、调方法以及调构造方法
1.this调属性和方法
class Woman{
String name;
int age;
public Woman(String name,int age) {//这一步要记清楚
this.name = name;//this,调属性,调的是成员属性
this.age = age;
this.paoBu();//this,调方法,调的是成员方法
}
public void paoBu() {
System.out.println(age+"岁的"+name+"在跑步");//这一步也要记清楚
}
}
public class this_1 {
public static void main(String[] args) {
Woman xm = new Woman("小米",30);
xm.paoBu();
}
}
2.this调构造方法
这种情形下可以有带参与无参的情况
this调构造方法的条件:1.放到构造方法中 2.必须放首句
class Spiderman{
String name;
int age;
public Spiderman() {
System.out.println("调无参构造...");//调无参构造时必须要将name赋值,不然就会出现的结果为null
}
public Spiderman(String name) {
this.name=name;
}
public Spiderman(String name,int age) {
this(name);//this调有参构造
//this();//this调无参构造
this.age = age;
}
public void fei() {
System.out.println(age+"岁的"+name+"在飞檐走壁");
}
}
public class this_3 {
public static void main(String[] args) {
Spiderman peter = new Spiderman("蜘蛛侠",25);//这里是小括号()不是[],{}
peter.fei();
}
}