栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象程序总结2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象程序总结2

静态变量和静态函数

封装

使用包

使用访问控制修饰符

使用类中类

继承

继承的构造方法

多态

抽象类和接口

静态变量和静态函数 (1)静态变量可以通过“对象名.变量名”来访问,例如“zhangsan. bankName",也可以 通过“类名。变量名”来访问,例如“Customer. bankName"。-般情况下推荐用“类名。变量 名”的方法访问,而非静态变量是不能用“类名。变量名”的方法访问的。 (2)从底层讲,静态变量在类被载入时创建,只要类存在,静态变量就存在,不管对象是否被实例化。

静态变量的常见应用

1保存跨对象信息

2存储对象个数

静态函数

有静态变量就有静态函数,静态变量和静态函数统称为静态成员。静态函数就是在普通函数的定义面前加上关键字static,代码如下;

class Customer {

String name;

static String bankName;

static void setBankName( String bankName) {
Customer. bankName = bankName;
}
}
public class StaticTest4 {

public static void main(String[] args) {

Customer zhangsan = new Customer();

zhangsan.name="张三";

Customer . setBankName("香港银行");

Customer lisi = new Customer();

lisi. name= "李四";

System, out, pr intln("lisi. bankName= "+ lisi. bankName);
}
}
使用包

(1)在源代码中,package chinasei;"表示该源文件中的所有类都位于包chinasei 中。package语句必须放在源代码文件的最前面,也可以不指定package 语句,相当于将类放在默认包中,不过指定包,使用更加方便、可靠。
(2)在Java中,推荐包名字的字母小写,例如“chinasi""bank”等,为了便于阅读,有时候还用“.”隔开。
(3)在将类放入某个包中之后,包将会用专门的文件夹来表示。
(4) 如果要用命令行来运行某个包中的类,必须首先到达包目录所在的上一级目录,例如本例中的bin目录,使用以下命令。
java 包路径.类名
例如,运行school. admin中的Teacher 类,首先必须到达bin目录,然后输入以下命令。
java school. admin. Teacher
这样即可运行其中的主函数。
(5)使用命令行编译一个,javn文件,在默认情况下不会生成相应目录。

类的访问控制修饰符

对于成员来说,访问控制修饰符共有4个,分别是private .default、protected. public.示例代码如下。
 

public class Customer{
private String name;
String sex;
protected int age;
public void display(){}
}


name成员为private类型,sex成员为default类型,age成员为protected类型,display成员为public类型。其中,default类型的成员前面没有任何修饰符。

其特性如下。

(1)private类型的成员只能在定义它的类的内部被访问。

(2) default 类型的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问。

3) protected类型的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。关于子类,将在后面章节讲解。

(4) public 类型的成员可以在定义它的类的内部被访问,也可以被包内、包外的所有其他类访问。

很明显,从开放的程度上讲,private< default< protected< public.
 

封装

封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。

封装的目的在于保护信息,保证数据的安全性
封装包括两个方面:属性的封装和方法的封装
Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问, 封装不是绝对的封装,如果想要访问封装起来的数据,可以通过指定的入口即可
属性和方法的封装两者时相辅相成、密不可分的
继承
程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。

继承要有一定的层次结构,而且还要具备一定的可传递性
子类继承了父类的所有属性和方法,但是不包括私有属性(private)和构造方法
子类继承父类的属性和方法同时也可以有自己的属性和方法。
Java 只支持单继承。 也就是说一个子类只能有一个父类,父类可以有多个子类
继承可以减少重复代码、提高了复用性和维护性
继承让类与类之间产生了关系,类的耦合性增强了,父类发生变化子类也会跟着改变

      //子类继承父类        (继承前面的Animal)
      public class Dog extends Animal{
          public Dog(){
              super();
              System.out.println("---dog---无参的构造方法------");
          }
          public Dog(String name,int age){
              super(name, age);
          }
      	//测试
          public static void main(String[] args) {
              Dog dog = new Dog();
              Dog d2 =new Dog("狗",10);
              System.out.println(d2.name+",age:"+d2.age);
          }
      }

运行结果:

------无参的构造方法------
—dog—无参的构造方法------
------有参的构造方法------
狗,age:10

 

继承中的构造方法
创建有继承关系的子类对象时,会先执行父类中默认的构造方法,然后执行子类中相关的构造方法
如果父类中不存在默认的构造方法,那么此时的解决问题,第一种就是手动添加一个默认的构造方法。
super关键字
表示当前类的父类的引用
只能出现在有继承关系的子类中
super两种用法:
super.属性名、super.方法名(参数列表)
表示父类的属性和方法,和子类中的属性或方法重名时使用
super(参数列表)
出现在子类构造方法的第一句代码时
就是通过参数列表匹配父类的构造方法来创建父类对象
多态
多态就是同一函数在不同类中有不同的实现;

面向对象的多态性,即“一个接口,多个方法”。
多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。
多态性允许一个接口被多个同类使用,弥补了单继承的不足。
 

//父类
public class Animal {
    public void talk(){
        System.out.println("讲话");
    }
}
*******************************************
//子类
public class Cat extends Animal{
    public void talk(){
        System.out.println("喵喵");
    }
}
*******************************************
//子类
public class Dog extends Animal{
    public void talk(){
        System.out.println("汪汪");
    }
}
*******************************************
//测试类
public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.talk();
        //以父类的名义实例化
        Animal dog = new Dog();
        //以子类自己的方法实现
        dog.talk();
        Animal cat = new Cat();
        cat.talk();
    }
}

运行结果:

讲话
汪汪
喵喵

抽象类和接口 

abstract class Dialog{
public abstract void show();
}

含有抽象函数的类称抽象类,抽象类必须用abstract修饰。

接口

在抽象类中可以含有普通成员函数,如果一个抽象类中的所有函数都是抽象的,也可以定义为接口(interface)。

在“继承接口”的情况下一-般有另一种说法,叫“实现(implements)接口”,子类也称为实现类。例如,上面的例子也可以写成如下代码。
 

package interface1;
interface Dialog {

public void show( ) ;
{
class FontDialog implements Dialog{

public void show(){

System. out. pr intln(”FontDialog. show()");
}
}
public class Main {

public static void toCenter(Dialog dialog){
System. out. println("计算屏幕数据");
dialog. show();
}
public static void main(String[ ] args){
FontDialog fd = new FontDialog() ;
toCenter( fd);
}
}


(1)接口中的方法不需要专门指明abstract,系统默认其为抽象函数,在接口中只能包含常量和函数。

(2)接口中的成员函数默认都是public访问类型,成员变量默认是用public static final标识的,所以接口中定义的变量是全局静态常量。

(3)接口可以通过extends继承另一个接口,类通过关键字implements来实现一个接口。(4)一个类可以在继承一个父类的同时实现一个或多个接口,多个接口用逗号隔开。格式如下。
class子类extends父类implements 接口1,接口2, ..{}

关键字extends必须位于关键字implements之前。
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号