JAVA面向对象

核心概念:类与对象

面向对象的三大特征:封装、继承、多态

面向对象最大优点:代码重用

类和对象
  • 定义:类是具有相同的特征及行为的一种群体,指的是同种对象的集合和抽象。类中的成员变量用于描述类的属性。
  • 对象: 包含特征和行为,对象是类的具体实例。
  • 对象是类的实例,类是对象们的抽象。
  • 在JAVA中,方法是对类或者对象行为的抽象,在C/C++里叫做函数
  • 类{属性特征+行为(方法)}

举个例子就好比说人类是一个类,能划分为人类的生物是具有相同的属性和相同的行为的对象。

/*[访问修饰符] class 类名{}
属性部分:成员变量
定义方法部分:成员方法
*/
public class People{
    String name;//名字
    String sex; //性别
    String blood;//血型
    int age;//年龄
    int height;//身高
 void jump{
     System.out.println('I can jump!')
 	//实现跳的方法
 }
 void run{
     System.out.println('I can run fast!')
    //实现跑的方法
 }
}//类中的成员变量的声明和方法要存放在同一个类中,全部代码一定要放在类的大括号内
//创建对象的格式:类名 对象名 =new 类名([参数1,参数2])
People p=new People();//用new关键字实例化People类对象并将其赋值给p
//对象的使用
p.name="xiaoxiao";
p.sex="女";
p.blood="A";
p.age=18
p.height=180;
面向对象程序设计的三大特征
  • 封装:将类的某些信息隐藏在类之中,不允许外部程序做直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。要实现封装需要将属性私有化,这样可以保证属性不被外部改动。优点如下:
    • 隐藏类的实现细节
    • 让使用者只能通过事先预定的方法来访问数据
    • 可以进行数据的检查从而有利于保证对象信息的完整性
    • 便于修改提高代码的可维护性。(将该隐藏的隐藏起来,把该暴露的暴露出来,可以使用访问控制符实现。)
  • 继承:继承是在封装的基础上实现的,一个类可以派生出多个子类。继承使得代码可以重用,避免了数据、方法的大量重复定义,保证了系统的可重用性。
    • 被继承的类叫做:父类或者基类;继承的类叫做:子类或者派生类。
    • 当子类与父类建立了继承关系之后,子类也就拥有了父类的非私有方法的成员属性和成员方法,同时还可以拥有自己方法。
    • 并且JAVA只支持单继承,即一个子类只能有一个父类,不支持多重继承,即一个子类有多个父类,但是c++支持多继承。
    • JAVA中还支持多层继承,意思就是父类也可以拥有自己的父类。
    • 在JAVA中所有的类都直接或者间接的继承了Object类。
  • 多态:多态主要体现在两个方面:重载和重写。即在一个继承关系的程序中允许同名的不同方法共存,子类的对象可以响应同名的方法,具体的实现方法却不同,完成的功能也不同,意思就是一个方法多种实现。多态使面向对象语言具有了灵活性、扩展性、代码共享性的特征。(多态是以继承为前提的,只有继承关系下的类才具有多态的特性)

重写:指的是子类在继承了父类之后,但是又不想完全沿用父类的方法,子类可以重新实现方法体之中的内容,这样父类和子类之间就会有名字相同实现不同的方法。

重载:如果同一个类中包含了两个及两个以上方法名相同,方法参数的个数、顺序或者类型不同的方法,则称为方法的重载。与返回值,访问修饰符无关。

多态:多态又可以分为静态动态和动态动态,其中静态多态可以简单理解为方法的重载,在实际程序编写中动态多态的用法更广更有效。

/*封装例子
1.私有属性用private关键字声明私有变量:
private String id;
2.公有的写操作访问器,使用setter()方法实现:
public void setId(String id){//方法体}
3.公有的读操作访问器,使用getter()方法实现:
public String getId(){//方法体}
*/
Public class People{
     private string id;
	 public void setId(string pid){
         //方法体(void函数没有返回值,如果想在方法中的任何地方终止执行,可以使用return后面不加任何返回值)
     }
    public string getId(){
        //方法体
    }
}
public class Test{
    public static void main(String[] args) {
    People p=new People();
        p.setId();
        string id=p.getId();
}
}
/*继承例子
[修饰符]class 子类名[extends父类]
*/
public class People{
    public int age ;
    pubilc string name;
    public string
        public void run(){
         System.out.println('我可以跑!')
    }
}
public class Student extends People{
    public String number ;//自己的属性
    public void study(){
        //自己的方法
    }
}
/*
多态例子
*/
public class People{
    public int age ;
    pubilc string name;
    public string
        public void run(){
         System.out.println('我可以跑!')
    }
}
public class Student extends People{
    public String number ;
    public void run(){
        System.out.println('我不可以跑!!')//方法的重写
    }
}
面向对象程序设计
  • 需求分析:分析用户的需求并将具有相同的属性和行为的对象用一个类来表示。这是一个比较繁琐的过程。
  • 设计:在需求分析的基础上,对每一部分分别进行具体的设计,首先是对类的设计,然后再提出程序设计思路…
  • 编程:运用适当的面向对象语言进行编程。
  • 测试:对程序进行严格的测试。其中包括单元测试(白盒测试)、集成测试(黑盒测试和白盒测试)、系统测试(黑盒测试)。最后还要进行维护管理。
类的建模

类结构的设计通常使用统一建模语言(UML)

UML主要类图:用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图、对象图。

常用的建模工具:IBM的Rational Rose、Together、MyEclipse等。

类的层次结构设计
  • 泛化:泛化关系就是继承,一般类和特殊类之间的关系是继承。
  • 依赖:两者相互有影响,依赖关系用一个虚线箭头表示。
  • 关联:是类与类之间的一种强依赖关系,这种关系不是临时的,是一种长期的语义关系。关联可以是单向的也可以是双向的。
  • 聚合: 是关联的一种特殊形式,体现的是类和类之间的整体与局部的关系。他们彼此独立但是又保持长期联系,一般是一对多的关系。
  • 组合:组合是一种特殊的聚合,整体类与局部类相辅相成,一旦整体类的生命周期结束,局部类的生命周期也随之结束。
面向对象程序设计原则
  • 单一责任原则
  • 开放–封闭原则
  • 依赖倒转原则
  • 里氏代换原则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值