我是靠谱客的博主 愉快月亮,最近开发中收集的这篇文章主要介绍第四章-类与对象类与对象三大特性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

面向过程
以功能为基础,从上到下,由大问题到小问题,逐步细化。跟人类思维方式很像

面向过程的缺陷:
代码的重用性和可维护性差。
数据和对数据的操作分离,数据安全不能保证。

类与对象

对象:现实世界中某个具体的物理实体,每个对象都包含特定的属性和行为。

  • 类:现实世界中具有相同属性和行为的物理实体的抽象。
    类是对对象的抽象,是创建对象的蓝图,描述了所创建的对象共同的属性和行为。
  • 对象是类的实例对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。
class Student{
   int num;
   String name;  // 成员属性
   String sex;
   void study(){} // 成员方法(行为)}
   
 类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体。
     通常即包含成员属性和成员方法的抽象数据类型

面向对象
将数据及其操作封装为类,以类的对象作为程序的基本元素,通过向对象发送消息,从而调用相应方法完成各种功能。

特点
对象为基本元素
数据——安全
程序的维护量较小、代码的重用率高(继承)
程序 = 对象 + 对象 + 对象 + … …

三大特性

  • 封装*
    – Step1: 将数据和处理数据的方法封装为类
    – Step2: 可以将某些成员声明为private从而达到信息隐藏的目的封装性 就是将属性(数据)和处理这些属性(数据)的行为(方法)结合起来,仅对外公开接口以达到信息隐藏的目的。

封装的优势:
– 封装是面向对象程序设计语言实现信息隐藏的方法。
– 封装隐藏了具体的实现细节,使某些成员设为私有从而提高了安全性和可靠性。
– Public、private、 一般封装属性,公开方法,每一个私有属性设置一个公开接口

  • 继承
    Java中的继承:
    在软件开发中,若已有类A,要创建类B,而类A和类B属性和行为基本相同,则只需在A的基础上增加些新的内容即可
    — 继承(inheritance)是面向对象软件技术当中的一个概念。 如果一个类B继承自另一个类A,就把这个B称为A的派生类,而把A称为B的父类基也可以称「A是B的超类」。 继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。

继承的优势
提高了代码的重用率,提高了编程效率。

  • 多态
    • 多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。
    • 在面向对象理论中,多态性的定义是:同一操作作用于不同的类的对象,将产生不同的执行结果 。
    • 多态的优势:
    – 增强了程序的灵活性。

  • 对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。

  • :是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体

类定义的语法:

[访问权限修饰符] class 类名 {  
[private/protected/public]   成员的声明和定义 ;
}
访问权限修饰符public  private  protected
---------------------------------------------
举例:
public class Student {         //class是声明的关键字,
	public   String sex;       //成员属性
   	//成员属性声明要以分号结尾,方法声明不用
	public   void study() {    //成员方法
    System.out.println("颤抖吧萌新们,感受java的魅力吧!");        
   	}
}

对象的实例化格式:

//方法一:
类只是抽象的数据类型,类对象才是具体可操作的实体
<类名>  <对象名> = new <类名> ([参数1,参数2,]) ;
	Student mary = new Student();//mary是对象名
	mary.name(1212);//对象赋值
//方法二:
<类名>  <对象名>;
<对象名> = new <类名> ([参数1,参数2,]) ;
	Student lily;
	lily = new Student();
	//定义对象时(stu s1=new stu( );)分配了属性成员内存,但没有方法内存。
	//方法引用时隐藏了一个参数,默认引用对象操作人的返回

类成员的访问

  1. 对象名.属性名
  2. 对象名.方法名(参数1,参数2)

封装的实现
通过访问修饰符来实现信息隐藏
一般将成员属性使用private修饰
定义用来访问成员属性的方法,并使用public修饰

//解决属性私有调用问题,用公开的内部函数返回私有的内部属性值,对象名.公开方法

public class Student { 
private String name ;
private int age; 
private String stuId ; 
//返回对象内容
public int getAge() {  return age; } 
public void setAge(int _age) {  age = _age; } 
public String getName() {  return name; } 
//通过参数更改对象内容
public void setName(String _name) {  name = _name; }
public String getStuId() {  return stuId; } 
public void setStuId(String _stuId) {  stuId = _stuId; }
}

//主函数操作:
Student  stu1= new Student(); //实例化一个对象
stu1.setName("zhang"); //设置学生对象姓名        	
String name = stu1.getName();//获取学生对象姓名
System.out.println(name);

在这里插入图片描述
类体—成员方法:
Java中方法只能定义在类中,称为类的成员方法,基本的语法:

  • [方法修饰符] 方法返回值类型 方法名([<参数列表>]) { 方法体 ; }
    举例:public int getAge() { return age; }

成员方法修饰符:主要有public、private、protect、final、static、abstract和synchronized7种, 用来说明方法的访问权限。

  • public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用;
  • public static void 修饰是静态方法,属于类,使用类名.方法名直接调用。
  • 当参数是基本数据类型时,方法不能修改实际参数的值。
  • 当参数是引用类型时,方法通过地址引用改变了实际参数对象的内容。

方法的返回值类型

  • Java语言要求,在成员方法说明中必须指明返回值的类型,如不需要返回值,返回值类型被说明为void。
    void fun() {}
  • 返回值用return语句来实现,如有返回值,return语句要加返回表达式,且表达式的值必须与方法中的返回值类型一致。
int fun() { 
	return 返回的数值;
}

重载:
同一个类中两个或以上的同名方法,参数类型、个数或顺序不同,称为方法的重载。
方法重载的依据:方法名相同但是参数列表必须不同
返回值类型可以不同(返回值类型不作为重载的依据)
是否是静态的也不作为重载依据
重载的方法之间可以互相调用

构造方法
功能:初始化对象
方法名:与类名相同
参数:可有,可无
返回值:不指定返回值(不能写void )
内容:任意,通常只包含成员赋值语句
调用方法:使用new创建对象时自动调用

特殊成员方法-构造方法
import java.util.*;
public class proctise {//构造方法定义 
    private String name;     //私有常量
    
    public proctise(){  
	System.out.println("this is constructor"); 
    }
    
    public proctise(String name) {  
      	this.name = name;
       	System.out.println("the student name is: " + this.name);
    }    
    				
    public String getName() {  return name; }    //成员方法定义
    public void setName(String name) {  this.name = name; }
		
	 public static void main(String[] args) {		//主类
		 	proctise stu1 = new proctise();          //调用无参构造方法
		 	proctise stu2 = new proctise("lisi");    //调用带参构造方法
	        stu1.setName("zhangsan");
	        System.out.println(stu1.getName());
	       
	}
}
				/*
				结果:
				this is constructor
				zhangsan
				the student name is: lisi
*/
在对象的生命周期中构造方法只会调用一次。
一个类中如果没有定义构造方法,Java编译器会自动为该类产生一个默认的构造方法。默认产生的构造方法是一个无参的,什么也不做的空方法。
只要类中有显示声明的构造方法,Java编译器就不产生默认的构造方法。
在一个类中可以定义多个构造方法,但构造方法的参数列表不能相同。

构造方法实现时可以通过this关键字调用已经存在的构造方法。
public class Student { 
    private String name; 
    private int age;
    public Student(){      //构造方法定义 
	System.out.println("this is constructor"); 
    }
    
    public Student(String name) {  
           this();
      	this.name = name;
    }
    public Student(String name, int age){
              this(name);
              this.age = age;
    }
} 

this关键字:
this用于引用本类中的属性和方法
-》this.属性、this.方法()
this调用本类的构造方法
-》使用this()、this(参数)的形式
-》this调用构造方法,只能放在重载的构造方法中的第一行

this还可以作为返回值,返回“当前调用方法”的那个对象的引用。
public class Count {
       private int num;
       public Count add(){
              num++;
              return this;
       }
       public int getNum() {
              return num;
       }
       public static void main(String[] args) {
              Count cou = new Count();
              cou.add().add();
              System.out.println(cou.getNum());
       }
} 

垃圾收集器
在C程序中,手工清理或删除缓存中的数据
可以通过free进行清理工作。

强制垃圾回收有如下两个方法 :
调用System类的gc () 静态方法 ;
调用Runtime对象的gc () 实例方法 ;

零碎知识点

  • Int a=10;是初始化,int a;a=10;是赋值
  • this(),在构造方法1中调用构造方法2,注意:必须放在构造方法1的第一行
    1、变量命名冲突的时候,用于区分。
    2、用于在类中调用构造函数。

如下:
public class test{
private int a;
private int b;
private int c;
public test(int a,int b){//作用1
this.a = a;
this.b = b;
}
public test(int a,int b,int c){//作用2
this(a,b);
this.c = c;
}
}
注意:在static方法中不能使用this,原因是静态方法存在于方法区,而对象存在于堆。

最后

以上就是愉快月亮为你收集整理的第四章-类与对象类与对象三大特性的全部内容,希望文章能够帮你解决第四章-类与对象类与对象三大特性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部