黑马程序员_java面向对象思想学习总结

本文详细阐述了Java语言中的核心编程思想——面向对象,包括类、抽象类、接口、关键字static、final以及封装、继承、多态等概念。通过实际代码示例,帮助读者理解和掌握Java面向对象编程的基本原理和应用。

                         -------<a href="http://www.itheima.com/"">android培训</a>、<a   href="http://www.itheima.com/" ">java培训</a>期待与您交流!----------

 

面向对象是java语言最根本的编程思想。对面向对象这种编程思想的学习是java语言学习最基本也是最核心的部分。

 

类:在java的世界里,将纷繁复杂世界里的存在最后都可以归结为类。一个个类组成了java的世界。而用java语言编写成序就是不断的在使用类,创建类,维护类。

类是由现实中用有共性的的实体对象进行抽像提取而来的。它拥有所有对象共有的属性与行为。即成员属性与成员方法。

抽象类:

当类中有抽象的方法,该类即为抽象类。必须被abstract关键字所修饰。

所谓抽象方法就是指该方法没有方法体。只声民了方法名,方法返回值类型。之所以出现抽象方法,因为类中的成员方法并不确定。

但抽象类也可以没有抽象方法。只要用abstract修饰类名即可。这样做通常是为了不让一类实例化。

接口:接口是可以说是一种特殊的类。它可以看做是行为的结合。实现某个接口,就相当于给某个类添加了一些功能。接口也经常被看做是种协议,让遵守这种协议的程序可以相互之间通信。

接口用interface定义。接口中的成员用固定形式定义,如下:

interface jk{
public static final int A=2;

public abstract int ha();

}

接口中的成员都是常量,用public static final修饰。方法用abstract修饰。接口中所有的方法都必须为抽象方法。

 

关键字 static

static修饰的方法 变量被称为静态成员变量 方法。静态成员被该类所有的对象所共享。在该类被创建对象时就会优先加载入内存中,用类名.的方式就可以调用。

final

final修饰的类为最终类,不可以被继续,修饰的变量为常量,只可以被赋值一次。修饰的方法不可以被覆盖。fianal修饰的引用数据类型的变量,只能指向一个对象,它的地址值不可以改变,但它所引用的对象是可以改变的。

使用final通常可以增加程序的执行效率,但前提是方法不能太庞大

 

java 中的访问权限:

public public 是最大的一种访问权限,在任何位置的程序都可以反问被他所修饰的成员。

   默认的反问权限,在java中没有为类或成员指出他的访问权限就会认为是默认的访问权限,可以被同一个包的成员所访问,不能被外面的包访问。

protect 可以被类的成员和其子类所反问。

private 私有的。只能被内部成员访问。prviate只可以修饰内部类。

 

面向对象的三大特征:

 

封装:将对象的属性与行为隐藏起来,仅对外提访问的接口。

封装的好处:将变化与用户隔离起来。

  提高代码的重用性。

  便于使用

            更加安全

所以我们在写代码中都应该遵守这个原则,将该类中仅供本类使用的成员都隐藏起来。只对外提供调用的接口。

继承:类与类存在着一种继承关系,如狗类就继承了动物类。当然继承只是类与类之间关系的一种。当一个类继承与另一个类他们的关系就是从属关系。这里要区别的是当一个类实现一个接口时,他们并不是从属关系。是like a而非is a

继承提高了代码的复用性。也为类的另外一种关系提供了可能,多态。

 

多态:1,多态的体现 

父类的引用指向了自己的子类对象。

父类的引用也可以接收自己的子类对象。 

      2,多态的前提 

必须是类与类之间有关系。要么继承,要么实现。 

通常还有一个前提:存在覆盖。 

多态的好处:大大提高了程序的扩展性。

多态的弊端:

只能用父类的引用反问父类的成员。

 

5,多态的应用 

abstract class Animal { 

        public abstractvoid eat(); 

class Cat extends Animal  {   

        public void eat(){   

                System.out.println("吃鱼");   

        }   

        public void catchMouse()  {   

                System.out.println("抓老鼠");   

        }   

}   

class Dog extends Animal  {   

        public void eat()  {   

                System.out.println("吃骨头");   

        }   

        public void kanJia()  {   

                System.out.println("看家");   

        }   

}   

class Pig extends Animal  {   

        public void eat()  {   

                System.out.println("饲料");   

        }   

        public void gongDi()  {   

                System.out.println("拱地");   

        }   

}   

   

class DuoTaiTest   {   

        public static void main(String[] args)   {   

                Animal a = new Cat(); 

                //类型提升。 向上转型。 父类类型指向子类对象  

                a.eat();  //吃鱼 

   

                //如果想要调用猫的特有方法时,如何操作?   

                //强制将父类的引用。转成子类类型。向下转型。   

                Cat c = (Cat)a;   

                c.catchMouse(); //抓老鼠 

   

                //不要出现这样的操作,就是将父类对象转成子类类型。   

                //我们能转换的是父类应用指向了自己的子类对象时。 

                //该应用可以被提升,也可以被强制转换。   

                //多态自始至终都是子类对象在做着变化。   

                //      Animal a = new Animal();   

                //      Cat c = (Cat)a;   

                   

面向对象的总结:

面向对象是java编程语言最根本的思想。我们应该用面向对象的思想看待现实中的问题,并将它转换为程序。不一定用java语言写出的程序就是面向对象的。想想以前自己将解决问题的代码全部一股脑的写到主函数里,真是可笑。时刻应该提醒自己在写带代码中,有封装了不必向外提供的数据了吗。这样写的代码以后需求改变时,它易与改变吗。它易于扩展吗。只有不断的用面向对象的思想在代码中实践才能写出真正的面向对象的java程序。

    -------<a href="http://www.itheima.com/"">android培训</a>、<a   href="http://www.itheima.com/" ">java培训</a>期待与您交流!----------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值