Java_总结六(面向对象之三大特性——封装性、内部类)

一、面向对象与面向过程的区别

  面向对象:

  --把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。
  --对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。
  --类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。
  --程序流程由用户在使用中决定。

  面向过程:

  --自顶向下顺序执行,逐步求精;
  --其程序结构是按功能划分为若干个基本模块,这些模块形成个树状结构;
  --各模块之间的关系尽可能简单,在功能上相对独立;
  --每一模块内部均是由顺序、选择和循环三种基本结构组成;
  --其模块化实现的具体方法是使用子程序。
  --程序流程在写程序时就已决定。

 

二、封装性

  封装机制在程序设计中表现为:

     --把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调用其内部的功能方法。

    --为封装在一个整体内的变量及方法规定不同级别的“可见性”或访问权

 

  一类就是对对象的封装(一个Student类)

    注意点

    (1)一个类中必须有构造方法(如果你没构造方法实例对象后是对的,那是因为类默认有一个无参构造方法)

        如:Student stu = new Student();这里实例一个对象是通过无参构造方法实现的

    (2)想实例时对成员属性赋值,就需要有有参构造方法(当又想实例一个无参对象时出错了,那是因为有参构造方法覆盖了无参构造方法,无参构造方法需要写出来,而不能使用默认的了)

package chapter.three;

public class Student {
    private String name;
    private String sex;
    private int age;
    private String school;
    //有参构造构造方法
    public Student(String name, String sex, int age, String school) {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.school = school;
    }
    //无参构造方法
    public Student() {
        super();
    }
    //以下是私有成员属性的Setters和Getters方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    //重写toString()方法打印成员属性
    @Override
    public String toString() {
        return "Student [name=" + name + ", sex=" + sex + ", age=" + age + ", school=" + school + "]";
    } 
}

 

  匿名对象

    作用:实际开发中基本上都是作为其他类实例化对象的参数传递的  

class Test05{
    public static void main(String[] args) {
        new Student("xiao", "男", 35, "清华");//匿名对象
    }
}

 

  内部类

package com.qianfeng.OuterInner;
//外部类值允许有四个修饰符   public   defualt abstract final
public class StaticNBL {
    
    static String name = "小华";
    
    static class Inner{
        //静态内部类里面可以有静态方法和静态属性
        static String name = "小红";
        private int age = 15;
        public void print(){
            System.out.println(StaticNBL.name+this.name+age);
        }
    }
    
    public static void main(String[] args) {
        //StaticNBL.Inner inner = new StaticNBL.Inner();这种方法更好,导包没导类名也不会出错
        Inner inner = new Inner();
        inner.print();
    }
}

 

转载于:https://www.cnblogs.com/liujianliang/articles/6820489.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值