马太效应 发表于 2017-7-14 23:42:07

Java暑期学习Day10

今天是第十天,希望能坚持下去{:7_130:}

封装(目的就是隐藏对象细节)
OOP三大特性——封装、继承、多态
①概念:a.将方法和字段一起包装到一个单元中,单元以类的形式实现。
      b.信息隐藏(使用访问修饰符),隐藏对象的实现细节,不让外部直接访问到。
       ..对模块的任何实现细节所做的更改不会影响该模块的代码
         ..防止用户意外修改数据
         ..是模块易于使用和维护<可维护性>
      c.将数据和方法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是一个同时带有特征和行为的数据类型。
Java语言提供了很多修饰符,主要分为以下两类:
a.访问修饰符(4种)
b.非访问修饰符(以下举例)
static 修饰符,用来创建类方法和类变量。(adj.静止的; 静电的; 不变的; [物] 静力的;
                                          n.静电; 静力学; [物]静电(干扰); 争吵; )
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。(adj.抽象的,理论上的; 难解的; 抽象派的; 茫然的;
                                             n.摘要; 抽象概念; 抽象派艺术作品; [化] 萃取物;
                                             vt.提取,分离; 转移(注意等); 概括,摘录; <婉辞>剽窃; )
synchronized 和 volatile 修饰符,主要用于线程的编程。
(synchronized 同步的;
volatile   adj.易变的,不稳定的; (液体或油) 易挥发的; 爆炸性的; 快活的,轻快的; )

②Java支持4种不同的访问权限。
默认的,也称为 default,在同一包内可见,不使用任何修饰符。
私有的,以 private 修饰符指定,只在同一类内可见。
共有的,以 public 修饰符指定,对所有类可见。
受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。

方法继承的规则:
父类中声明为 public 的方法在子类中也必须为 public。
父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
父类中声明为 private 的方法,不能够被继承。


修饰符 当前类 同一包内子孙类 其他包
public 是 是 是 是
protected 是 是 是 否
default 是 是 否 否
private 是 否 否 否


③属性封装的实现:a.修改属性的可见性
                        b.对每个属性创建一对赋值setter和取值getter方法,用于公开对这些属性的访问接口
                        c.在赋值setter和取值getter方法中,根据需要加入对属性操作的限制


④封装方法的目的:a.隐藏方法实现细节(方法体),向外提供公开接口(方法头),以供安全调用
                        b.简化调用,方便修改维护
                        c.根据需要,可以私有化方法以供内部使用——帮助方法(helper)


public class Demo {
        public static void main(String[] args) {
                Teacher t=new Teacher();
        //        t.name="TE";The field Teacher.name is not visible
                t.setName("TE");
                System.out.println(t.getName());
                t.setAge(12);
                System.out.println(t.getAge());
               
        }
       
}
class Teacher{
        private String name;
        private int age;
        public void setName(String tname){
                name=tname;
        }
        public String getName(){
                return name;
        }
        public int getAge(){
                return age;
        }
        public void setAge(int tage){
                if(tage<25){
                        System.out.println("年龄较小~");
                        age=25;
                }else{
                        age=tage;
                }
       
        }
}
1. 在类中定义方法,void(方法名称前)表示不用返回值。
2. Java命名习惯中,方法名称前是小写。

小甲鱼 发表于 2017-7-14 23:54:14

加油,你坚持学下去,我坚持看下去!

马太效应 发表于 2017-7-15 01:41:36

小甲鱼 发表于 2017-7-14 23:54
加油,你坚持学下去,我坚持看下去!

非常谢谢你,一直觉得行走在路上很茫然,不管是哪方面,偶有的支持真的是生命最大的慰藉。之前通过你的教学视频来学习数据结构,后来就发现了这个论坛,觉得很温暖。
我会坚持下去的,生命不息,奋斗不止!
页: [1]
查看完整版本: Java暑期学习Day10