将多继承机制通过多现实来体现。
6:一个类在继承另一个类的同时,还可以实现多个接口。所以接口的出现避免了单继承的局限性。还可以将类进行功能的扩展。
7:其实java中是有多继承的。接口与接口之间存在着继承关系,接口可以多继承接口。
接口都用于设计上,设计上的特点:(可以理解主板上提供的接口)
1:接口是对外提供的规则。 2:接口是功能的扩展。
3:接口的出现降低了耦合性。
抽象类与接口:
抽象类:一般用于描述一个体系单元,将一组共性内容进行抽取,特点:可以在类中定义抽象内容让子类实现,可以定义非抽象内容让子类直接使用。它里面定义的都是一些体系中的基本内容。
接口:一般用于定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能。
抽象类和接口的共性:都是不断向上抽取的结果。
抽象类和接口的区别:
1:抽象类只能被继承,而且只能单继承。
接口需要被实现,而且可以多实现。
2:抽象类中可以定义非抽象方法,子类可以直接继承使用。
接口中都有抽象方法,需要子类去实现。 3:抽象类使用的是 is a 关系。
接口使用的 like a 关系。 4:抽象类的成员修饰符可以自定义。
接口中的成员修饰符是固定的。全都是public的。
在开发之前,先定义规则,A和B分别开发,A负责实现这个规则,B负责使用这个规则。至于A是如何对规则具体实现的,B是不需要知道的。这样这个接口的出现就降低了A和B直接耦合性。
6.下面哪个方法不属于String类提供的_____D_ A.IndexOf() B.getChar2()
C.replace() //替代String里的某个字符 D.append() //StringBuffer类的方法
1.字符串串联(String Concatenation) var q =
from c in db.Customers select new {
c.CustomerID,
Location = c.City + \ };
语句描述:这个例子使用+运算符在形成经计算得出的客户Location值过程中将字符串字段和字符串串联在一起。
2.String.Length var q =
from p in db.Products
where p.ProductName.Length < 10 select p;
语句描述:这个例子使用Length属性查找名称短于10个字符的所有产品。
3.String.Contains(substring) var q =
from c in db.Customers
where c.ContactName.Contains(\ select c;
语句描述:这个例子使用Contains方法查找所有其联系人姓名中包含“Anders”的客户。
4.String.IndexOf(substring) var q =
from c in db.Customers select new {
c.ContactName,
SpacePos = c.ContactName.IndexOf(\ };
语句描述:这个例子使用IndexOf方法查找每个客户联系人姓名中出现第一个空格的位置。
5.String.StartsWith(prefix) var q =
from c in db.Customers
where c.ContactName.StartsWith(\ select c;
语句描述:这个例子使用StartsWith方法查找联系人姓名以“Maria”开头的客户。
6.String.EndsWith(suffix) var q =
from c in db.Customers
where c.ContactName.EndsWith(\ select c;
语句描述:这个例子使用EndsWith方法查找联系人姓名以“Anders”结尾的客户。
7.String.Substring(start) var q =
from p in db.Products
select p.ProductName.Substring(3);
语句描述:这个例子使用Substring方法返回产品名称中从第四个字母开始的部分。
8.String.Substring(start, length) var q =
from e in db.Employees
where e.HomePhone.Substring(6, 3) == \ select e;
语句描述:这个例子使用Substring方法查找家庭电话号码第七位到第九位是“555”的雇员。
9.String.ToUpper() var q =
from e in db.Employees select new {
LastName = e.LastName.ToUpper(), e.FirstName };
语句描述:这个例子使用ToUpper方法返回姓氏已转换为大写的雇员姓名。
10.String.ToLower()
var q =
from c in db.Categories
select c.CategoryName.ToLower();
语句描述:这个例子使用ToLower方法返回已转换为小写的类别名称。
11.String.Trim() var q =
from e in db.Employees
select e.HomePhone.Substring(0, 5).Trim();
语句描述:这个例子使用Trim方法返回雇员家庭电话号码的前五位,并移除前导和尾随空格。
12.String.Insert(pos, str) var q =
from e in db.Employees
where e.HomePhone.Substring(4, 1) == \ select e.HomePhone.Insert(5, \
语句描述:这个例子使用Insert方法返回第五位为 ) 的雇员电话号码的序列,并在 ) 后面插入一个 :。
13.String.Remove(start) var q =
from e in db.Employees
where e.HomePhone.Substring(4, 1) == \ select e.HomePhone.Remove(9);
语句描述:这个例子使用Remove方法返回第五位为 ) 的雇员电话号码的序列,并移除从第十个字符开始的所有字符。
14.String.Remove(start, length) var q =
from e in db.Employees
where e.HomePhone.Substring(4, 1) == \ select e.HomePhone.Remove(0, 6);
语句描述:这个例子使用Remove方法返回第五位为 ) 的雇员电话号码的序列,并移除前六个字符。
15.String.Replace(find, replace)
var q =
from s in db.Suppliers select new {
s.CompanyName, Country = s.Country
.Replace(\
.Replace(\ };
语句描述:这个例子使用 Replace 方法返回 Country 字段中UK 被替换为 United Kingdom 以及USA 被替换为 United States of America 的供应商信息。 7.在Java多线程中,调用下面哪种方法不会使线程进入阻塞状态?______B__ A.sleep()
B.suspend() //uspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,
并且不会自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行...
C.wait() D.yield()
//java之yield(),sleep(),wait()区别详解-备忘笔记
博客分类: java-->>线程
java线程sleep yieldrun start 1、sleep()
使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为
MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完毕后,低优先级的线程才能够执行;但是高优先级的线程sleep(500)后,低优先级就有机会执行了。
总之,sleep()可以使低优先级的线程得到执行的机会,当然也可以让同优先级、高优先级的线程有执行的机会。 2、join()
join()方法使调用该方法的线程在此之前执行完毕,也就是等待该方法的线程执行完毕后再往下继续执行。注意该方法也需要捕捉异常。