黑马程序员技术交流社区

标题: 分享一个自己写的小代码,主要看注释 [打印本页]

作者: 冬冬宋    时间: 2016-8-9 23:23
标题: 分享一个自己写的小代码,主要看注释
我这个注释写的啊,我自己都感动了{:2_39:}
[AppleScript] 纯文本查看 复制代码
class Demo_employee {
        public static void main(String[] args) {
                coder c = new coder("冬冬","110",15000);
                c.work();
                System.out.println("--------------------");
                manager m = new manager("苍老师","120",15000,20000);
                m.work();
        }
}

abstract class employee{        //因为本类中抽象方法那么,类一定要是抽象的,但是抽象的类,不一定要有抽象方法,
        private String name;        //有抽象方法,类一定是抽象的
        private String id;
        private double salary;
        public employee(){}
        public employee(String name,String id,double salary){
                this.name = name;
                this.id = id;
                this.salary = salary;
        }
        public void setName(String name){
                this.name = name;
        }
        public String getName(){
                return name;
        }
        public void setId(String id){
                this.id = id;
        }
        public String getId(){
                return id;
        }
        public void setSaraly(double salary){
                this.salary = salary;
        }
        public double getSalary(){
                return salary;
        }
        public abstract void work();//我们之知道他们两个都有工作的这个行为,但是我们不知道他们具体是怎么工作的,所以定义为抽象方法
}

class coder extends employee{
        public coder(){}
        public coder(String name,String id,double salary){
                super(name,id,salary);
        }
        public void work1(){
                System.out.println("我的工作是写代码");
        }
        public void work(){
                System.out.println("我的姓名是:"+getName()+'\n'+"我的工号是:"+getId()+'\n'+"我的工资是:"+getSalary());
                work1();//本来中的方法可以直接调用
        }
}

class manager extends employee{
        private int jiangjin;        //这是子类中特有的属性
        public manager(){}
        public manager(String name,String id,double salary,int jiangjin){//对象要传递四个参数过来这里就必须有四个参数接收,保持参数长度相同
                super(name,id,salary);//父类中只有三个参数,所以这里也只能传递三个参数、、、、、注意
                this.jiangjin = jiangjin;//this调用本来中属性,也就是,对象传递过来四个参数,super将三个参数传递给父类,this将一个给本类
        }
        public void work1(){
                System.out.println("我的工作是服务程序员");
        }
        public void work(){        //因为父类中有抽象方法,那么子类就一定要对这个抽象方法进行重写,这是强制的
                System.out.println("我的姓名是:"+getName()+'\n'+"我的工号是:"+getId()+'\n'+"我的工资是:"+getSalary()+'\n'
                                                        +"我的奖金是:"+jiangjin);
                work1();
        }
}

作者: 冬冬宋    时间: 2016-8-9 23:25
[AppleScript] 纯文本查看 复制代码
class Demo_Interface_test {
        public static void main(String[] args) {
                //下面这两段,是正常写法,代码的复用性太差了;简化代码,请看第37行到47行
                //第一个Cat类使用多态
                /*Anilam a = new Cat("萌萌","粉色",4);//使用有参构造创建对象,并且是父类引用指向子类对象(多态的一个条件)
                System.out.println("我的名字是:"+a.getName()+'\n'+"我是:"+a.getColor()+'\n'+"我今年:"+a.getAge()+"岁");
                a.eat();
                a.sleep();
                Cat c = (Cat)a;//向下转换,因为在多态中,子类的特有成员方法不能被调用,需要向下转换才可以,调用
                c.mengmengda();//向下转换后,可以调用

                System.out.println("-------------------------------------");
                //第二个Cat类使用多态
                Anilam d = new Dog("蛋蛋","黑色",2);//父类引用指向子类对象(多态的条件)
                System.out.println("我的名字是:"+d.getName()+'\n'+"我是:"+d.getColor()+'\n'+"我今年:"+d.getAge()+"岁");
                d.eat();
                d.sleep();
                Dog y = (Dog)d;
                y.yaoren();*/


                System.out.println("-------------------------------------");
                //这里使用了接口,体现了接口的扩展性,经过培训的狗狗,虽然有他特有的技能,但是,他还是具备所有狗类具有的行为属性
                Inter i = new yDog();//接口引用指向子类对象,也就是父类引用指向子类,这里可以把这个父类,理解成干爹
                i.yy();//调用子类方法

                System.out.println("-------------------------------------");
                //这块其实和上面的是重复的
                Dog m = new yDog("99","888",23);
                System.out.println("我的名字是:"+m.getName()+'\n'+"我是:"+m.getColor()+'\n'+"我今年:"+m.getAge()+"岁");
                m.eat();
                m.sleep();
                yDog y1 = (yDog)m;
                m.yaoren();
                y1.chishi();

                //使用多态的好处,可以当成参数传递,节省代码量
                mothod(new Cat("萌萌","粉色",4));
                mothod(new Dog("蛋蛋","黑色",2));

        }
        //使用多态,可以当做参数传递,那就可以抽取方法,请看下面是抽取到的方法
        public static void mothod(Anilam a){
                System.out.println("我的名字是:"+a.getName()+'\n'+"我是:"+a.getColor()+'\n'+"我今年:"+a.getAge()+"岁");
                a.eat();
                a.sleep();
        }
}
/*
         A:案例演示
        * 动物类:姓名,年龄,吃饭,睡觉。
        * 猫和狗
        * 动物培训接口:跳高
*/
abstract class Anilam{        //定义抽象类,动物是一个群体里面都包括什么我们不知道,所以定义为抽象类
        private String name;        //定义了一个私有的成员变量,私有的成员变量不能被子类访问
        private String color;
        private int age;
        public Anilam(){}//空参构造,可以使用空参构造,子类可以访问本类中私有成员变量
        public Anilam(String name,String color,int age){//有参参构造,可以使用从参构造,子类可以访问本类中私有成员变量
                this.name = name;
                this.color = color;
                this.age = age;
        }
        public void setName(String name){        //设置姓名
                this.name = name;
        }
        public String getName(){        //获取姓名
                return name;
        }
        public void setColor(String color){        //设置年龄
                this.color = color;
        }
        public String getColor(){        //获取年龄
                return color;
        }
        public void setAge(int age){        //设置年龄
                this.age = age;
        }
        public int getAge(){        //获取年龄
                return age;
        }
        public abstract void eat();//定义抽象方法、、抽象对象中既可以有抽象方法,也可以有非抽象方法,
        public abstract void sleep();//但是类里面如果有抽象方法,那么他就一定的是抽象类
}
class Cat extends Anilam{        //子类继承父类,这里是Cat继承Anilam
        public Cat(){}        //空参构造,用来给父类和本类初始化
        public Cat(String name,String color,int age){
                super(name,color,age);
        }
        public void eat(){
                System.out.println("我吃鱼");
        }
        public void sleep(){
                System.out.println("我喜欢躺着睡");
        }
        public void mengmengda(){        //这是子类中特有的方法,在多态中没有办法直接调用,but,可以使用向下转型来调用,请看9-10行
                System.out.println("我萌死人不偿命");
        }
}

class Dog extends Anilam{        //子类继承父类,BUT,父类是一个抽象类,所以我们要对他的抽象方法进行重新,这是强制的
        public Dog(){}
        public Dog(String name,String color,int age){
                super(name,color,age);
        }
        public void eat(){        //这里是对父类对象中的抽象方法进行强制重写,这是规则,必须遵守
                System.out.println("我喜欢吃肉");
        }
        public void sleep(){        //同上,这也是强制重写父类的抽象方法
                System.out.println("我喜欢趴着睡");
        }
        public void yaoren(){
                System.out.println("我专咬坏蛋");//这是子类中特有的方法,在多态中没有办法直接调用,but,可以使用向下转型来调用,请看18-19行
        }
}

interface Inter{        //定义了一个接口,关于接口,接口里面必须全部都是抽象方法,他其实是对子类的一种扩展,可以是多继承的
        public void yy();//接口中的抽象方法
}

class yDog extends Dog implements Inter{        //这里是yDog先继承了他的父类Dog,然后还实现了(这里可以理解为利用)Inter
                                                                                        //所以,这里是可以多实现的,因为我能利用这个,就能利用那个
        public yDog(){}
        public yDog(String name,String color,int age){
                super(name,color,age);
        }
        public void eat(){
                System.out.println("我喜欢吃肉");
        }
        public void sleep(){       
                System.out.println("我喜欢趴着睡");
        }
        public void yy(){
                System.out.println("经过培训的狗狗可以游泳");//接口的子类,必须对接口的抽象方法进行强制重写,不重写都不行
        }
        public void chishi(){       
                System.out.println("有时会吃屎");
        }
}
/*接口的子类,如果还继承了其他抽象父类,那么用法和多态是一样的,子类特有方法不能被直接调用,不过可以使用向下转型来调用*/

作者: 敲敲乐z    时间: 2016-8-10 00:11
当初我也是这么写的,一写一大排!!现在看着就感觉,快捷键刷刷刷就敲出来了!
作者: 乐仔其中    时间: 2016-8-10 00:28
面向对象的代码就是太长了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2