Java基础面向对象(上)

------- android培训java培训、期待与您交流! ----------

面向对象的三大特性:封装,继承,多态。
封装:

是指隐藏对象的属性和实现细节。仅对外提供公共访问方式:

好处:提高复用性。提高安全性。原则:将不需要对外提供的内容隐藏起来。提供公共的方法对其进行获取和设置。例如:

class student{

//具有名称属性

private String name;

private int age;

public void setName(String name){

this.name=name;

}

public String getName(){

return this.name;

}

public void setAge(int age){

this.age=age;

}

public int getAge(){

return this.age;

}

}

注意要想让方法识别到这个属性,例如name属性,那么设置的方法setName(String name)这个方法名称为set+首字母大写的变量名称,如果为getName()同意get+首字母大写的变量名称。

构造函数:

特点:函数名与类名相同,不用定义返回值类型,不可以写return语句。作用是用于对对象进行初始化。注意:默认构造函数的特点,多个构造函数时以重载的形式存在。

[修饰符]+类名

例如public person(){}可以是有参的构造函数也可以是无参的构造函数。有参的例如:public person (String name){this.name=name;}次构造方法可以再对象初始化时就传入一个参数。为person初始化姓名。

如果一个类中没有自定义构造函数那么会默认有一个无参的构造函数。当我们定义了一个有参构造函数时那么系统不会默认添加无参的构造函数。当创建对象时会报错。、

例如:

提示的错误:

构造代码块:作用对所有对象进行初始化,对象一建立就运行,并且优先与构造函数。{ System.out.println("这是构造代码块");}里面定义的是不同对象共性的初始化内容;

this关键字:代表它所在函数的所属对象的引用。

this的应用:当定义类的函数时,如果这个函数要用到这个函数所属的对象时,用this表示这个对象。

例如:Person类中定义了一个方法用于判断是否名字相同。


如果this关键字用于构造函数之间的相互调用那么this语句只能定义在构造函数的第一行;

例如:

public person(String naem){ this.name=name; } 

public person(String name, int age ){ 

this(name);//只能在第一行

this.age=age;

}

static 关键字:静态的。

它是一个修饰符,用于修饰成员变量和成员方法。

当成员方法或成员变量被static修饰后就会多了一个调用方式。类名.成员

例如person类中有一个 static getName()方法和static String country;成员变量 那么可以用:person.getName();形式获取到name属性。

也可以用过person.country形式获取到country属性。

static特点:1,随着类的加载而加载随着类的消失而消失,生命周期最长。2,优先与对象的存在。3,被所有对象所共享。4,可以直接被类名调用。

被static修饰的成员变量为类变量,它随着类的加载而存在于方法区中。实例变量是随着对象的存在而存在消失而消失的,随着对象的建立存在于堆内存中。

静态使用的注意事项:静态方法只能访问静态的成员。非静态的方法既可以访问静态的成员也可以访问非静态成员

静态方法中不能定义this,super关键字因为静态的成员优先与对象的存在,当静态方法载入时,对象还没有建立因此this无用。

staitc关键字图例:

主函数也是静态的。是一个特殊的函数,做为java程序的入口,可以被JVM调用。

public 公共的代表访问权限最大,static 主函数代表随着类的加载而加载,void 主函数没有返回值,man不是关键字但是一个特殊的单词可以被JVM识别。

主函数的参数:String[] args 是一个字符串类型的数组。这是一个固定格式,可以被JVM识别,为程序的入口。

静态代码块:随着类的加载而执行,并只执行一次。优先于主函数。格式static{  语句  }

因为静态代码是初始化类的,代码块是初始化所有对象的,构造函数是初始化某个具体对象的。

执行顺序:person(){} static {}  {}  先执行静态代码块 后执行代码块最后构造方法

执行顺序图例:


对象在初始化过程中的内存分配图例:

继承:

它其实源于生活中,例如猫是动物,狗也是动物,那么动物就具有它们的共性那就是都是动物。猫和狗都具有动物的某些特征。

继承的出现提高了代码的复用性。让类与类之间产生了关系,就有了多态的出现。

注意:千万不要不要为了获取其他类的功能简化代码而继承。必须要类与类之间有从属关系才可以继承

Java中的继承具有单继承特性,每个子类只能有一个直接父类。不具备多继承但java中保留了这种多继承的机制,叫多实现,也就是实现多个接口。Java中的继承通过extends关键字来实现。实现继承的类叫子类。被继承的类叫父类或超类。

因为子类继承与父类,因此父类包含的范围比子类大。

图例:

在继承中如果子类中非私有的变量名和父类的变量名相同时如果获取子类的变量那么用this.变量,如果获取父类中的变量那么super.变量获取。

this代表了子类对象。super代表了父类对象。

当子类继承了父类,但不满足于父类的功能时,我们就可以进行重写,覆盖掉父类的方法。也就是说比如:动物都可以奔跑,猴子继承了动物,但猴子奔跑的方式是跳着跑,狗也继承动物,但狗奔跑的方式是汪汪的跑。

它的结果

值得注意的是重载:子类的权限必须大于等于父类的方法,静态方法只能覆盖静态方法。

在构造函数中:如果子类继承了父类,在对子类进行对象初始化时,会首先执行父类的构造函数,因为在每个子类的构造函数中的第一行都有一条隐式的super()语句,来进行父类的初始化。

当父类中没有空参数的构造函数时,我们必须手动的在子类的构造函数的第一行通过super语句的形式指定要访问父类的构造函数。

子类的构造函数也可以通过this指定本类的构造函数,子类中的构造函数至少有一个会访问父类的构造函数。

Final关键字图例:

抽象类:

图例:











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值