黑马程序员关于面象对象以及它的三大特性:封装 继承 多态

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

java语言是一个面向对象的语言,c是一个面向过程的语言。

          个人理解所谓面向对象,面向--对象,就是把要解决的事物问题分成各个对象,然后让对象去解决,简单的说就是把要解决的事物问题分成多个类,尽最大能力的分成多个类,分文别类,让每个类实现不同的功能及属性,然后可以实例化这个类,可以实例出多个对象,多次调用不同的属性及行为。面向--过程,针对的是实现的过程,可以说是把解决事物问题的步骤一步步去实现,个人理解,类中的方法实现可以说是一个面向过程,java的终极目标就是做到纯面向对象的语言,好处是当出现问题时,可以很准备的判断是哪个类出现了问题,方便修改,而不影响全局。面向对象其实就一种思想,它的出现,将复杂的问题简单化,让曾经在过程中的执行者,变成了对象中的指挥者。

import java.util.Arrays;//导入util.Arrays
public class Blog_2 { 
 public static void main(String[] args) {
        int[] arr={11,0,-3,5,-7,10,23};
        System.out.println(Arrays.toString(arr));//调用Arrays类中的toString(int[] a)方法,打印输出数组
        Arrays.sort(arr);//调用Arrays.sort()方法,对数进行从小到大的排序
        System.out.println(Arrays.toString(arr));//排序后的数组       
 }
}

输出结果:

原数组为:           [11, 0, -3, 5, -7, 10, 23]
排序后的数组为:[-7, -3, 0, 5, 10, 11, 23]
上面就是利用面向对象的思想对数组进行从小到大的排序 

........................................................................................................................................................................................       

下面求这个数组中的最大值:

public class Blog_2 { 
 public static void main(String[] args) {
        int[] arr={11,0,-3,5,-7,10,23};
        int max=arr[0];//定义最大值为数组中的任意元素
        for (int i = 0; i < arr.length; i++) {//遍历数组
        max=max<arr[i]?arr[i]:max;   //利用三元运算求最值
  }
        System.out.print(max);
 } 
}

输出结果:23

 

上面是求最大值的步骤,可以说是面向过程的思想来解决事物问题

........................................................................................................................................................................................ 由此可看出面向对象在解决事物问题时更方便快捷, 它的三大特性:封装,继承,多态

1.封装      谈到封装我们常常会想到箱子,容器,但在java中,封装是一个类中,加private对属性或方法进行封装后,然后对外提供set和get方法进行访问 ,封装了的属性和方法只能在本类的内部调用,而不能被类的外部调用

class Student{
 private String name;//对name进行封装,
 private int age;//对age进行封装
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {

      if(a>0)
      this.age = age;
 }
 
}
public class Blog_2 { 
 public static void main(String[] args) {
        Student s=new Student();
        s.setName("小明");//通过set对name进行设置
        s.setAge(21);//通过set对age进行设置
       String str= s.getName();//获取name
       int a= s.getAge();//获取age
        System.out.print(str+a);
 } 
}
输出结果:小明21

................................................................................................................................................................................

封装也可对对象进行封装,例如单例设计模式

class Single{//
 private static final Single s=new Single();//把对象进行封装
 private Single(){}//同时把空参的构造函数封装
 public static Single getInstance(){//对外提供一个获取该类对象的方法
  return s;
 } 
}

................................................................................................................................................................................

 封装也可对一个类进行封装,例如内部类

2.继承   在java中通过继承可以简化类的定义,扩展类的功能,类的继承可以以既有的类为基础,又可以派生出新的类,提高了代码的复用性,用关键字extends实现类的继承

 

 class Person{
 String name;
 int age;

 public void talk(){
  System.out.println("person...talk..."+name+age);
 }
}
class Students extends Person{
 String school;
}
public class ExtendsDemo { 
 public static void main(String[] args) {
       Students s=new Students();
       s.name="小明";
       s.age=23;
       s.school="北京";
       s.talk();
       System.out.print("姓名:"+s.name+",年龄:"+s.age+",学校:"+s.school);    
 }
}
输出:person...talk...小明23
姓名:小明,年龄:23,学校:北京

子类继承父类,子类可调用父类的属性,也可继承父类的方法,会出现重载和覆写的情况,函数的重载是函数名相同,参数类型或参数个数不同,重载和覆写也可以作为多态的技术之一

................................................................................................................................................................................

 3.多态

多态,顾名思义,是一种事物的多种表现形式,以继承或覆盖为前提,如果说是继承是子类调用父类,那么多态可以说是父类调用子类。

class Animals{
 String name;
 public void eat(){
  System.out.print("animal...eat..");
 }
}
class Cat extends Animals{ 
 public void eat(){
  System.out.print("cat...eat...fish");
 }
}
public class AnimalCatDemo {
 public static void main(String[] args) {
        Animals al=new Cat();//向下强转
        al.eat();
 }
}

输出:cat...eat...fish

  Animals al=new Cat() 猫向上提升后动物类,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值