首先面向对象编程分为封装、继承、和多态
封装就是将代码隐藏不能随便访问的一种方式它相当于就是将代码装进一个房子里只能达到条件才能被访问或者修改 一般在Java中我们将类中的属性进行封装这样更有利于代码的安全性,Java中的封装快捷键为 shift+alt+s+r然后点击Select All为全部封装 也可以在左边选择那些属性进行封装 点击OK即可
private String name; //取值调用这个方法 public String getName() { return name; } //赋值调用这个方法 public void setName(String name) { this.name = name; }
然后是继承 继承主要的作用为减少代码的冗余提高代码的复用性,比如现在有两个类分别都有相同的字段然而这样的话就是有重复的代码这样是非常不好的 会影响你的代码运行速度 那怎么办呢? 这就用到了继承 继承是将一个类里面的东西变成公用的继承的类都可以访问 我们把有公有公有代码的那个类叫父类继承的类叫子类 打个比方动物类 动物有名字那么应该还有个行为是介绍自己的吧那么就可以这样定义
public class Animal {
private String name;
public String getName() {
return name;
}
//构造函数
public void setName(String name)
{this.name = name;
}
public Animal(){
}
//构造函数
public Animal(String name ){
this.setName(name);
}
//protected这个访问修饰符是在同包同类子类都可以访问的修饰符
protected void show(){System.out.println("我叫"+this.getName());
}
那么继承这个类怎么继承呢? 使用extends关键字来继承写在那么怎么来给父类里面的值赋值呢 那就要用到构造函数 构造函数是在这个类实例化是执行的方法没有返回值 void修饰都不能加 直接访问修饰符加类名括号里面可以有参也可以无参看上面代码就知道 那么在子类中怎样写呢?public class Dog extends Animal { public Dog(String name){ super(name); } public void show(){ super.show(); }其中super关键字代表父类对象的引用super.show()代表调用父类里面的show方法super()代表调用父类的构造函数这样就把值给了父类里面的属性 然后我i们在创建测试类
public class Test { /** * @param args */ public static void main(String[] args) { Dog l=new Dog("楠楠"); l.show(); }
我叫楠楠以上是测试类代码和运行结果当然我们还可以创建多个动物让它继承自动物类这样就可以实现一个属性控制所有子类的值减少了代码量使代码重复使用
下面是多态其实上面继承代码中有实现多态就是在子类中重新写了父类中的方法这就是多态的之一 还有一种就是使用 abstract关键字去修饰一个类这个类有点不一样继承的子类必须重写父类中的用abstract修饰的方法并且这个方法不能有方法体下面介绍一下抽象类(abstract修饰的类)和抽象方法(abstract修饰的方法)的特点
1.使用abstract修饰 2.不能被实例化 3.可以包含抽象方法和普通方法 4.不能是密封()或者静态(static)的
1.使用 abstract进行修饰. 2.没有方法体 3.必须位于抽象类当中 4.必须被子类强制重写,除非子类是抽象类
遵循以上几点才是一个完整的抽象结构实现多态有两种方式一个是父类作为参数调用方法一个是父类作为返回值
public abstract class Animal { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Animal(){ } public Animal(String name) { super(); this.name = name; } protected abstract void show(); }
public class Dog extends Animal { public Dog(String name){ super(name); } public void show(){ System.out.println("我叫"+super.getName()); }
public class Polymorphic { public void sj(Animal l){ l.show(); }
public class Test { /** * @param args */ public static void main(String[] args) { Dog l=new Dog("楠楠"); Polymorphic k=new Polymorphic(); k.sj(l); }
上面是父类作为参数在main方法中sj方法可以根据参数调用相应的抽象类继承的子类的方法以上代码输出结果为楠楠下面是父类作为返回值的从上面代码做更改
public class Polymorphic { public Animal sj(Animal x,String name){ //instanceof关键的字的作用是用来判断传入的参数类型 if (x instanceof Dog) { return new Dog(name); } return x; }
public class Test { /** * @param args */ public static void main(String[] args) { Dog l=new Dog(); Polymorphic k=new Polymorphic(); Animal p= k.sj(l,"楠楠"); p.show(); } }
在Polymorphic类中父类作为返回值然后在main方法中接收注意接收要用父类接收然后点show方法展示信息结果是楠楠
好了本次分享就到这里
转载请标明出处:java面向对象MyEclipse 10开发
文章来源: java面向对象MyEclipse 10开发